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

SQL Server 控制語句基礎:變數、邏輯與批次處理完全指南

     編輯:MySQL 綜合教學

SQL Server 控制語句基礎:變數、邏輯與批次處理完全指南

掌握 T-SQL 程式設計基礎,是撰寫高效預存程序、觸發器與批次腳本的關鍵。本文系統整理全域/區域變數、資料型別轉換、流程控制(IF/WHILE/CASE)、輸出列印與批次處理(GO)等核心語法,並附上實戰範例。

一、全域變數(系統變數)

以 @@ 為前綴,唯讀,由系統維護。常用清單:

變數用途範例結果
@@VERSIONSQL Server 版本資訊Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
@@IDENTITY最後一條 INSERT 產生的識別欄值5
@@ROWCOUNT上一條語句影響的資料列數1
@@SERVERNAME本地伺服器名稱DESKTOP-M5OLTTN
@@ERROR最後一條語句的錯誤號109(欄位數不符)
@@SERVICENAMESQL Server 服務名稱MSSQLSERVER
@@LANGUAGE目前語言環境繁體中文
@@MAX_CONNECTIONS最大同時連線數32767
@@TIMETICKS每微秒刻度數31250
@@TRANCOUNT目前連線開啟的交易數0

二、區域變數

宣告與賦值

DECLARE @var INT;          -- 宣告
SET @var = 100;            -- 單一賦值,效能較好
SELECT @var = 200;         -- 可同時賦值多個變數,或從資料表取值

差異重點:SET 為 ANSI 標準,單次賦值效能優;SELECT 可從資料表查詢賦值,支援多變數同步賦值。

三、輸出語句

  • PRINT @var 或 PRINT '訊息':單純列印字串/變數
  • SELECT @var 或 SELECT '訊息':以結果集形式輸出,可攜帶欄位名稱

四、資料型別轉換

CAST (運算式 AS 資料類型)
CONVERT (資料類型, 運算式 [, 樣式])  -- 樣式可選,如日期格式 120 = yyyy-mm-dd hh:mi:ss

五、流程控制語句

1. 區塊標記:BEGIN ... END

相當於 C# 的 { },可巢狀嵌套。

2. 條件判斷:IF ... ELSE

IF @score >= 60
    PRINT '及格';
ELSE
    PRINT '不及格';

3. 迴圈:WHILE

WHILE @i < 10
BEGIN
    SET @i += 1;
    PRINT @i;
END

4. 多重分支:CASE

CASE
    WHEN @grade = 'A' THEN '優'
    WHEN @grade = 'B' THEN '良'
    ELSE '需加強'
END

注意:若無 ELSE 且所有 WHEN 均不成立,回傳 NULL。

六、批次處理:GO

GO 非 T-SQL 指令,而是 SSMS/sqlcmd 的批次分隔符號。一個批次內的語句會被編譯成單一執行單元,減少編譯開銷。變數作用域不跨越 GO。

實戰小結

  • 善用 @@ROWCOUNT、@@ERROR 做錯誤處理與流程控制
  • 區域變數優先用 SET,需查表賦值才用 SELECT
  • CASE 運算式可直接嵌入 SELECT/UPDATE,避免程序式寫法
  • 大量腳本以 GO 分批,避免單一批次過大導致記憶體壓力
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved