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开发,软件架构设计、分布式相关、项目管理、前端设计等等,实战派...
  • 相关阅读:
    mysql命令大全(转发)
    算法大神学习之路
    MYSQL之explain的作用与相关知识
    FastDFS(分布式存储系统)+nginx web 服务器
    获取用户浏览历史记录(django_redis)
    用户登陆装饰器和页面跳转(包含mixin的使用)
    .NET 方法回调
    asp.net viewstate 数据过大 导致错误
    asp.net viewstate 数据大导致错误
    软件测试 Record
  • 原文地址:https://www.cnblogs.com/zqmingok/p/1486921.html
Copyright © 2011-2022 走看看