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(@strwhere, len(@strwhere)-4)
END
--按使用者名稱排序
set @strsql = @strsql + ' ORDER BY Type,UserID'
exec (@strsql)
GO
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-621846/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 15個常用sql語句 分支 迴圈 子查詢 儲存過程 事務 常用函式 sql語句執行過程(轉載備用)SQL儲存過程函式
- MySql常用30種SQL查詢語句優化方法MySql優化
- Sql Server系列:SQL語句查詢資料庫中表、檢視、儲存過程等組成SQLServer資料庫儲存過程
- EF中使用SQL語句或儲存過程SQL儲存過程
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- 帶有儲存過程的組合查詢儲存過程
- 編寫和優化SQL Server的儲存過程優化SQLServer儲存過程
- 儲存過程結果進行查詢 select 存過過程儲存過程
- GaussDB SQL查詢語句執行過程解析SQL
- 一條SQL語句的優化過程SQL優化
- 儲存過程 與 SQL Server語句大比拼儲存過程SQLServer
- 在.NET中用儲存過程執行SQL語句儲存過程SQL
- Sql語句本身的優化-定位慢查詢SQL優化
- 通過SQL語句提取儲存過程中的內容SQL儲存過程
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- MySQL 儲存過程中事務sql異常回滾MySql儲存過程
- 兩種SQL分頁方法儲存過程和遊標儲存過程SQL儲存過程
- 效能優化查詢語句優化
- 儲存過程模糊查詢(like)儲存過程
- pl/sql儲存過程優化一例SQL儲存過程優化
- 透過shell和sql結合查詢效能sqlSQL
- 通過shell和sql結合查詢效能sqlSQL
- MySQL儲存過程語句及呼叫MySql儲存過程
- JAVA + Oracle儲存過程返回查詢結果集JavaOracle儲存過程
- Ms Sql Server查詢儲存過程中的內容SQLServer儲存過程
- SQL語句查詢表結構SQL
- 優化SQL查詢:如何寫出高效能SQL語句優化SQL
- 淺談MySQL中優化sql語句查詢常用的30種方法MySql優化
- sql server儲存過程語法SQLServer儲存過程
- asp.net分頁的SQL語句及儲存過程ASP.NETSQL儲存過程
- MySQL查詢語句過程和EXPLAIN語句的基本概念及其最佳化MySqlAI
- ORACLE 查詢語句處理過程(Oracle
- SQL 語句的優化方法SQL優化
- 儲存過程基本語法和須注意事項儲存過程
- 查詢儲存過程報錯資訊儲存過程
- MySQL 儲存過程/遊標/事務MySql儲存過程
- 儲存過程中巢狀事務儲存過程巢狀
- 關於事務的儲存過程儲存過程