declare @institution varchar(10) = 'a', @num numeric(10,1) = 200.1
RAISERROR ('Start of strength_senior_update, @institution = %s', 0, 1,
@institution);
RAISERROR ('Start of strength_senior_update, @institution = %s, @num=%s', 0, 1,
@institution,@num);
第一個 RAISEERROR 顯示預期結果
strength_senior_update 開始,@institution = a
但第二個 RAISEERROR 回傳錯誤如下
替換引數 2 的資料型別與格式規范的預期型別不匹配。
無論如何,數字資料型別沒有格式規范,那么如何將 raiseerror 與數字引數一起使用?必須宣告一個 varchar 變數,然后先將 @num 轉換為該 varchar 變數?
- 如果這么麻煩,我為什么不改用 print 呢?
uj5u.com熱心網友回復:
數字資料型別沒有格式規范,那么如何將 raiseerror 與數字引數一起使用?必須宣告一個 varchar 變數,然后先將 @num 轉換為該 varchar 變數?
正確,RAISERROR格式規范是有限的,因此解決方法是將格式化的訊息文本分配給一個變數以用于RAISERROR. 從評論中收集的以下示例使用CONCAT(將 NULL 值轉換為空字串)并FORMAT以您選擇的格式顯示數值。
DECLARE @institution varchar(10) = 'a', @num numeric(10,1) = 200.1, @message varchar(2047);
SET @message = CONCAT('Start of strength_senior_update, @institution = '
, @institution
, ', @num='
, FORMAT(@num, '0.0')
);
RAISERROR (@message, 0, 1);
如果這么麻煩,我為什么不改用 print 呢?
除非您想使用選項或替換引數,否則使用RAISERROR而不是用于嚴重性為零的資訊性訊息沒有任何價值。允許您直接指定訊息運算式而無需分配給變數:PRINTNOWAITPRINT
DECLARE @institution varchar(10) = 'a', @num numeric(10,1) = 200.1;
PRINT CONCAT('Start of strength_senior_update, @institution = '
, @institution
, ', @num='
, FORMAT(@num, '0.0')
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/489852.html
標籤:sql服务器
上一篇:檢查表中是否存在列并重命名它們
下一篇:獲取存盤程序中受游標影響的行數
