首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 R2 查詢視窗輸出訊息的兩種方法

     編輯:關於SqlServer

方法一:PRINT 陳述式 (標準作法)

-- 字串
PRINT 'Hello World';

-- 整數 (隱含轉換)
PRINT 27;

-- 浮點數
PRINT 39.27;
PRINT 0.11111111111111111111;

特性:

  • 輸出至「訊息」索引標籤,不影響結果集
  • 支援字串、數值隱含轉換
  • 長度限制:8000 字元 (varchar) / 4000 字元 (nvarchar)
  • 緩衝輸出:批次結束或 RAISERROR('',0,1) WITH NOWAIT 才會顯示

方法二:透過系統表 SELECT (變通技巧)

-- 任意輸出
SELECT * FROM sysobjects;  -- 產生結果集

-- 條件輸出單一訊息
SELECT 'Hello World' FROM sysobjects WHERE id = 3;

原理: 利用系統表一定有資料列,透過 WHERE 篩選控制輸出筆數。

進階:即時輸出與格式化

-- 即時顯示 (不等批次結束)
RAISERROR('即時訊息', 0, 1) WITH NOWAIT;

-- 格式化輸出
DECLARE @msg VARCHAR(100) = '處理完成: %d 筆, 耗時 %d ms';
RAISERROR(@msg, 0, 1, 1234, 56) WITH NOWAIT;

-- 變數內容除錯
DECLARE @var INT = 42;
PRINT '變數值: ' + CAST(@var AS VARCHAR(10));

比較表

特性PRINTRAISERROR(...,0,1) WITH NOWAITSELECT
即時顯示否 (緩衝)是否 (結果集)
格式化支援否是 (printf 風格)否
輸出目的地訊息索引標籤訊息索引標籤結果格線
長度限制8000/40002048無
適用場景一般除錯、流程標記長時間執行進度回報快速檢視、臨時查詢

最佳實務

  1. 預存程序除錯:關鍵節點用 PRINT 或 RAISERROR
  2. 長時間批次:每 N 筆用 RAISERROR WITH NOWAIT 回報進度
  3. 避免在高頻迴圈中 PRINT (效能影響)
  4. 生產環境移除除錯輸出或改用擴展事件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved