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

  • 相关阅读:
    poj 1562 Oil Deposits
    poj 1650 Integer Approximation
    snmp4j 编程
    ubuntu 13.04 163源(亲测可用)
    c语言中static 用法总结(转)
    Spring入门
    Hibernate入门
    Struts2入门教程
    素数距离问题
    ASCII码排序
  • 原文地址:https://www.cnblogs.com/richzhang/p/2984827.html
Copyright © 2011-2022 走看看