2013年12月2日 星期一

T-SQL EXECUTE 基本操作

在T-SQL裡的變數,不能用來取代物件名稱或是關鍵字,只能用在運算式中。所以如果要動態組出 SQL 陳述式,使用 EXECUTE 陳述式,可以透過動態的方式來設定。SQL Server 擴充了 EXECUTE 陳述式的功能,讓我們可以把要執行的 T-SQL 傳給 SQL Server。
以下是要在書局裡,找出一本書類別是科學的

USE BookStore
GO
-- 宣告變數
DECLARE @SQLCommand nvarchar(200)
DECLARE @columnList nvarchar(50)
DECLARE @color varchar(10)

-- 定義變數

SET @columnList = N'BookID書本編號, Type 類型'
SET @type = '''Science'''
-- 動態組出 T-SQL
SET @SQLCommand = 'SELECT ' + @columnList + ' FROM Production.Book WHERE Type = ' + @type

-- 執行動態組出的 T-SQL

EXECUTE (@SQLCommand)

@type這變數值左右各用了 3 個單引號(')來把 Science 包起來,第 1 個單引號代表變數值的型別是 nvarchar 型別,第 2 與第 3 個單引號最後會被視為只有一個單引號。EXECUTE 陳述式之後,用一對刮號把要執行的 T-SQL 給包起來。

這樣是簡短的命令,但是效果相同:

EXEC (@SQLCommand)

也可以增加查詢的條件,例如查詢ID編號

USE AdventureWorks
GO

-- 宣告變數
DECLARE @SQLCommand nvarchar(200)
DECLARE @columnList nvarchar(50)
DECLARE @color varchar(10)
DECLARE @pID varchar(5)

-- 定義變數
SET @columnList = N'BookID 書本編號, Type 類型'
SET @type = '''Science'''
SET @pID = '002'

-- 動態組出 T-SQL
SET @SQLCommand = 'SELECT ' + @columnList + ' FROM Production.Book WHERE Type = ' + @color + ' AND BookID < ' + @pID

-- 執行動態組出的 T-SQL
EXEC (@SQLCommand)

要注意變數型態的對應,否則執行時會出現型能不符的錯誤。

-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言