zoukankan      html  css  js  c++  java
  • SQL存储过程事务和优化方法(包括查询方式语句结合)

    判断插入值是否重复:

    CREATE PROCEDURE  IR_rb_User_UpdateUser
    (
        
    @UserID        int,
        
    @Name    nvarchar(50),
        
    @Email           nvarchar(100),
        
    @Password    nvarchar(20),
        
    @RoleID        int,
        
    @iSuccess    int output
    )
    AS

    set @iSuccess = -1    --判断是否成功有错误应为插入重复键

    IF EXISTS (SELECT Email  FROM rb_Users WHERE Email = @Email and UserID<>@UserID)
    BEGIN
      
    set @iSuccess = -2
      
    return
    END

    BEGIN TRAN

        
    UPDATE    rb_Users  SET    Name   = @Name,    Email    = @Email,    Password = @Password  WHERE    UserID   = @UserID

        
    IF @@ERROR <> 0
        
    BEGIN
            
    ROLLBACK TRAN
            
    return
        
    END
        
    set @iSuccess = -3

        
    update rb_UserRoles set RoleID=@RoleID  where UserID=@UserID

        
    IF @@ERROR <> 0
        
    BEGIN
            
    ROLLBACK TRAN
            
    return
        
    END

    COMMIT TRAN

    set @iSuccess = 1
    GO



    条件查询语句:

    CREATE PROCEDURE IR_SysAuthorization_GetAllSysAuthorization
    (
        
    @Type int,
        
    @UserID varchar(20)
    )
     
    AS

    declare     @strsql    varchar(1500)        --临时sql语句
    declare     @strwhere    varchar(1000)        --临时sql的条件语句

    set @strsql = ''
    set @strsql = @strsql + 'select UserID,Role,(select typename from SysAuthorizationType where type=t.type) as typeTmp, '
    set @strsql = @strsql + '(CASE WHEN State = 1 THEN ' + '''有效''' + ' ELSE ' + '''无效''' + ' END) AS StateTmp '
    set @strsql = @strsql + 'FROM SysAuthorization t '

    set @strwhere = ''


    IF  @UserID <> '' 
    BEGIN
        
    set @strwhere = @strwhere + ' and (UserID LIKE ' + '''' + '%' + @UserID + '%' + '''' + ')'
    END

    IF  @Type >0
    BEGIN
        
    set @strwhere = @strwhere + ' and Type =  ' + CAST(@Type AS varchar(12))
    END

    if @strwhere <>''
    BEGIN
        
    set @strsql = @strsql + ' where ' + right(@strwherelen(@strwhere)-4)
    END

    --按用户名排序
    set  @strsql = @strsql + ' ORDER BY Type,UserID'

    exec (@strsql)
    GO
  • 相关阅读:
    Django项目上线的准备工作
    Centos安装MySQL5.6并重置密码
    Centos7.4下安装Python3
    Django单表查询及其方法
    thinkphp 视图模型使用分析
    thinkphp 统计某个字段不重复数 总数
    表结构相同的表,且在同一数据库 数据复制
    crontab 定时任务 每过多少分钟执行
    js event事件
    shell 验证ip
  • 原文地址:https://www.cnblogs.com/blsong/p/1618546.html
Copyright © 2011-2022 走看看