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

    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

    keim,毕业于安徽科技学院理学院,2003年开始对Web开发有浓厚的兴趣,并专注于C#/java Web开发,软件架构设计、分布式相关、项目管理、前端设计等等,实战派...
  • 相关阅读:
    从跳频技术聊CDMA/WIFI之母海蒂·拉玛传奇的一生
    echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转
    kafka-connect-kudu-sink插件
    mysql8远程连接问题
    zookeeper-3.4.5修改存储1M大小限制
    Java并发之CompletionService详解
    傲视Kubernetes(六):Pod管理及控制器
    傲视Kubernetes(五):注解和命名空间
    Es使用kibana增删改查以及复杂查询
    测试Ik分词器以及增加自己的词汇
  • 原文地址:https://www.cnblogs.com/zqmingok/p/1486921.html
Copyright © 2011-2022 走看看