注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Start Know

自分を信じて、自分で一定でいけます

 
 
 

日志

 
 

SQL存储过程事务和优化方法  

2008-10-02 16:35:12|  分类: SQL SERVER |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

判断插入值是否重复:

事务和存储过程优化

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

条件查询语句:

条件查询直接放在SQL中判断

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(@strwhere, len(@strwhere)-4)

END

--按用户名排序

set  @strsql = @strsql + ' ORDER BY Type,UserID'

exec (@strsql)

GO

  评论这张
 
阅读(680)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017