當前位置:首頁 » 存儲配置 » sql存儲過程博客園

sql存儲過程博客園

發布時間: 2025-09-05 06:52:04

① 如何在sqlserver 的函數或存儲過程中拋出異常

其語法如下:

RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ]
)
[ WITH option [ ,...n ] ]

簡要說明一下:

第一個參數:{ msg_id | msg_str | @local_variable }
msg_id:表示可以是一個sys.messages表中定義的消息代號;
使用 sp_addmessage 存儲在 sys.messages 目錄視圖中的用戶定義錯誤消息號。
用戶定義錯誤消息的錯誤號應當大於 50000。

msg_str:表示也可以是一個用戶定義消息,該錯誤消息最長可以有 2047 個字元;
(如果是常量,請使用N'xxxx',因為是nvarchar的)
當指定 msg_str 時,RAISERROR 將引發一個錯誤號為 5000 的錯誤消息。

@local_variable:表示也可以是按照 msg_str 方式的格式化字元串變數。

第二個參數:severity
用戶定義的與該消息關聯的嚴重級別。(這個很重要)
任何用戶都可以指定 0 到 18 之間的嚴重級別。
[0,10]的閉區間內,不會跳到catch;
如果是[11,19],則跳到catch;
如果[20,無窮),則直接終止資料庫連接;

第三個參數:state
如果在多個位置引發相同的用戶定義錯誤,
則針對每個位置使用唯一的狀態號有助於找到引發錯誤的代碼段。

介於 1 至 127 之間的任意整數。(state 默認值為1)
當state 值為 0 或大於 127 時會生成錯誤!

第四個參數:argument
用於代替 msg_str 或對應於 msg_id 的消息中的定義的變數的參數。

第五個參數:option
錯誤的自定義選項,可以是下表中的任一值:
LOG :在錯誤日誌和應用程序日誌中記錄錯誤;
NOWAIT:將消息立即發送給客戶端;
SETERROR:將 @@ERROR 值和 ERROR_NUMBER 值設置為 msg_id 或 50000;

[SQL]代碼示例

--示例1DECLARE @raiseErrorCode nvarchar(50)
SET @raiseErrorCode = CONVERT(nvarchar(50), YOUR UNIQUEIDENTIFIER KEY)
RAISERROR('%s INVALID ID. There is no record in table',16,1, @raiseErrorCode)

--示例2RAISERROR (
N'This is message %s %d.', -- Message text,
10, -- Severity,
1, -- State,
N'number', -- First argument.
5 -- Second argument.
);
-- The message text returned is: This is message number 5.
GO

--示例3RAISERROR (N'<<%*.*s>>', -- Message text.
10, -- Severity,
1, -- State,
7, -- First argument used for width.
3, -- Second argument used for precision.
N'abcde'); -- Third argument supplies the string.
-- The message text returned is: << abc>>.
GO

--示例4RAISERROR (N'<<%7.3s>>', -- Message text.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO

--示例5
--A. 從 CATCH 塊返回錯誤消息
以下代碼示例顯示如何在 TRY 塊中使用 RAISERROR 使執行跳至關聯的 CATCH 塊中。
它還顯示如何使用 RAISERROR 返回有關調用 CATCH 塊的錯誤的信息。

BEGIN TRY
RAISERROR ('Error raised in TRY block.', -- Message text.
16, -- Severity.
1 -- State.
);
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;

SELECT
@ErrorMessage = ERROR_MESSAGE(),
@ErrorSeverity = ERROR_SEVERITY(),
@ErrorState = ERROR_STATE();

RAISERROR (@ErrorMessage, -- Message text.
@ErrorSeverity, -- Severity.
@ErrorState -- State.
);
END CATCH;

--示例6
--B. 在 sys.messages 中創建即席消息
以下示例顯示如何引發 sys.messages 目錄視圖中存儲的消息。
該消息通過 sp_addmessage 系統存儲過程,以消息號50005添加到 sys.messages 目錄視圖中。

sp_addmessage @msgnum = 50005,
@severity = 10,
@msgtext = N'<<%7.3s>>';
GO

RAISERROR (50005, -- Message id.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO

sp_dropmessage @msgnum = 50005;
GO

--示例7
--C. 使用局部變數提供消息文本
以下代碼示例顯示如何使用局部變數為 RAISERROR 語句提供消息文本。sp_addmessage @msgnum = 50005,
@severity = 10,
@msgtext = N'<<%7.3s>>';
GO

RAISERROR (50005, -- Message id.
10, -- Severity,
1, -- State,
N'abcde'); -- First argument supplies the string.
-- The message text returned is: << abc>>.
GO

sp_dropmessage @msgnum = 50005;
GO
轉自博客園: www.cnblogs.com/weixing/p/3930162.html

② 新手入門c#.net網路編程的問題。

首先肯定的說看書是一個好習慣~

我個人建議你從理論入手,先了解下C#和C#的一些基礎(或者如果討厭看那些煩亂的理論的話,可以直接從一些介紹C#的小程序入手)

期間注意使用好程序自帶的MSDN(幫助文檔),我聽過一句話:MSDN的使用水平直接可以看出一個人的技術水平~不要過多的依賴Internet(雖然找起很快很多,不過都是大同小意的,一旦沒有了網,編寫代碼時你就很容易成為一個無頭蒼蠅)

網站開發是很博大精深的~C#屬於後台語言~我個人以前的方法是這樣的:
從小程序開始,或者從熟悉每個控制項的應用開始,編寫的過程中穿插理論知識...這是我的方法,實踐是最好的老師(喜歡看代碼的話可以找一以代碼為基礎理論為輔助的書,喜歡從控制項入手,可以找以控制項應用的介紹為基本的書,潛移默化中就你會慢慢了解C#,我以前有一個朋友看一本理論為主代碼為輔助的書來來回回看了七遍~內容的代碼編寫了七遍~~~結果如何我不得而知了~,不過我很欣賞他這精神)

沒有必要特別關注於這書那書的..到最後你就會發現,其實他們都是一個意思,只是每個人的說法不同罷了~

等你熟悉了這些基礎知道或者基礎控制項的應用之後你就可以試著去做一個留言本了,留言本我可以告訴你個最簡單的方法~,顯示用一個"GridView控制項"就可以了,在模板類裡面放個"自定義控制項"(自定認控制項就是你每個留言顯示的格式和小界面的制定)基本上論壇你也可以這么寫~,至於分頁方面,如果你資料庫不錯的話,建議用資料庫分頁..當然用GridView自帶的分頁也行,只是速度會慢一些
(備注:很多種方法都可以做出來~,比較深入或者復雜一點的的需要你了解了程序理念後自已體會了,我不一項項列出了)

有問題可以給我發郵件:[email protected]

熱點內容
蘋果手機密碼鎖了怎麼解鎖 發布:2025-09-05 09:00:30 瀏覽:885
apache埠修改linux 發布:2025-09-05 08:42:22 瀏覽:718
kafka源碼編譯 發布:2025-09-05 08:30:21 瀏覽:586
用電腦怎麼看無線密碼 發布:2025-09-05 08:17:54 瀏覽:954
aspmvc源碼 發布:2025-09-05 08:11:18 瀏覽:398
手機解鎖密碼忘了怎麼取消手機解鎖密碼 發布:2025-09-05 08:01:51 瀏覽:318
花臉安卓怎麼下載 發布:2025-09-05 07:50:02 瀏覽:997
python一行寫for 發布:2025-09-05 07:49:31 瀏覽:500
linux獲取文件大小 發布:2025-09-05 07:43:01 瀏覽:978
雲伺服器傳送文件到電腦 發布:2025-09-05 07:30:39 瀏覽:195