zoukankan      html  css  js  c++  java
  • SQL存储过程实例

    例1 传入一个参数@username,判断用户是否存在

    -------------------------------------------------------------------------------
    CREATE PROC IsExistUser
    (
    @username varchar(20),
    @IsExistTheUser varchar(25) OUTPUT--输出参数
    )
    as
    SELECT @IsExistTheUser = count(username)
    FROM users
    WHERE username = @username
    GO


    例2 存储过程结合事务的一个例子:添加用户,涉及到两个表,一个用户资料表,一个密码表:


    增加用户
    -------------------------------------------------------------------------------
    create procedure AddUser
    (
    @username varchar(20),--用户名
    @passwords varchar(18),--密码
    @email varchar(100),--邮箱
    @qq varchar(11),--QQ号码
    @imageid int--头像
    )
    as
    -- 设置NOCOUNT为ON,使不再返回统计信息(存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。)
    SET NOCOUNT ON

    DECLARE @CurrentError int

    -- 创建事务, 插入数据到2个表
    BEGIN TRANSACTION

    -- 创建用户信息
    INSERT INTO users (username, email, qq, imageid)
    VALUES (@username, @email, @qq, @imageid)

    select @CurrentError = @@Error

    IF @CurrentError != 0
    BEGIN
    GOTO ERROR_HANDLER
    END

    -- 创建用户密码
    INSERT INTO Signon (username, [password])
    VALUES (@username, @passwords)

    select @CurrentError = @@Error

    IF @CurrentError != 0
    BEGIN
    GOTO ERROR_HANDLER
    END

    -- 结束事务
    COMMIT TRANSACTION

    -- 恢复NOCOUNT设置为OFF
    SET NOCOUNT OFF

    -- 返回0表示成功,其他则为失败
    RETURN 0

    -- 错误处理
    ERROR_HANDLER:
    ROLLBACK TRANSACTION
    SET NOCOUNT OFF
    RETURN @CurrentError
    GO

  • 相关阅读:
    mysql学习【第4篇】:数据库之数据类型
    mysql学习【第3篇】:数据库之增删改查操作
    mysql学习【第2篇】:基本操作和存储引擎
    mysql学习【第1篇】:数据库安装
    模块
    面向对象 之 反射 内置方法
    面向对象 的属性 类方法 静态方法
    python day
    day 18 面向对象的 继承
    python day
  • 原文地址:https://www.cnblogs.com/richzhang/p/2984827.html
Copyright © 2011-2022 走看看