當前位置:首頁 » 存儲配置 » sql存儲過程錯誤處理

sql存儲過程錯誤處理

發布時間: 2025-04-10 21:06:18

A. sql存儲過程中事務出現錯誤回滾,那麼在回滾之後的語句會執行嗎

會的。

一般回滾操作都是寫在異常處理,或是sql的最後。如果你的sql中出現錯誤 ,代碼會立即跳轉到錯誤處理代碼上執行,比如回滾,但緊接在錯誤行之後的代碼不會執行的。


1.update .....;

2.select ......;
3.when Exception
....rollback;
4.insert into .....

以上偽代碼,如果行1出錯,行2將不會執行,直接跳轉到行3,然後行4 也會執行。

B. 在sql2005資料庫執行存儲過程出現:關鍵字 'SET' 附近有語法錯誤。 怎麼處理呀代碼如下

換成

CREATE proc [dbo].[GetDataSet]
@TableList Varchar(1024)='*',--搜索表的欄位,比如:』id,datatime,job『,用逗號隔開
@TableName Varchar(100), --搜索的表名
@SelectWhere Varchar(1024)='',--搜索條件,這里不用寫where,比如:job=』teacher『and class='2'
@SelectOrderId Varchar(50),--表主鍵欄位名。比如:id
@SelectOrder Varchar(200)='', --排序,可以使用多欄位排序但主鍵欄位必需在最前面.也可以不寫,比如:order by class asc
@intPageNo int=1, --頁號
@intPageSize int=10 ,--每頁顯示數
@RecordCount int OUTPUT --總記錄數(存儲過程輸出參數)
as
declare @TmpSelect NVarchar(4000)
declare @Tmp NVarchar(4000)
declare @pagecount int
set nocount on--關閉計數
set @RecordCount=0
set @TmpSelect = 'select @RecordCount=count(*) from '+@TableName+' where '+@SelectWhere
execute sp_executesql
@TmpSelect, --執行上面的sql語句
N'@RecordCount int OUTPUT' , --執行輸出數據的sql語句,output出總記錄數
@RecordCount OUTPUT
if (@RecordCount = 0) --如果沒有貼子,則返回零
return 0
set @pagecount = @RecordCount/@intPageSize
if(@RecordCount%@intPageSize>0)
set @pagecount=@pagecount+1
if(@pagecount<=0)
set @pagecount=1
if(@intPageNo>@pagecount)
set @intPageNo=@pagecount
/*判斷頁數是否正確*/
--if (@intPageNo - 1) * @intPageSize > @RecordCount --頁號大於總頁數,返回錯誤
--set @intPageNo=@pagecount
set nocount off--打開計數
if @SelectWhere != ''
begin
set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+' where '+@SelectWhere +' '+@SelectOrder+') and '+@SelectWhere +' '+@SelectOrder
end
else
begin
set @TmpSelect = 'select top '+str(@intPageSize)+' '+@TableList+' from '+@TableName+' where '+@SelectOrderId+' not in(select top '+str((@intPageNo-1)*@intPageSize)+' '+@SelectOrderId+' from '+@TableName+''+@SelectOrder+') '+@SelectOrder
end
execute sp_executesql @TmpSelect
return(@@rowcount)
GO

熱點內容
python防止反編譯 發布:2025-04-26 03:09:57 瀏覽:342
文件伺服器ip下載 發布:2025-04-26 02:59:46 瀏覽:329
c語言轉換函數 發布:2025-04-26 02:45:00 瀏覽:261
php開發從入門到精通 發布:2025-04-26 02:33:36 瀏覽:108
phpmysqli類 發布:2025-04-26 02:05:51 瀏覽:301
如何上傳網頁 發布:2025-04-26 01:57:26 瀏覽:365
wifi密碼從哪裡開始算 發布:2025-04-26 01:46:24 瀏覽:75
查看ftp當前目錄 發布:2025-04-26 01:41:17 瀏覽:226
sqlbetweenand的用法 發布:2025-04-26 01:33:55 瀏覽:376
零基礎學單片機c語言 發布:2025-04-26 01:32:23 瀏覽:111