Home [SQL] 執行動態SQL語法 (sp_executesql)
Post
Cancel

[SQL] 執行動態SQL語法 (sp_executesql)

SQL SERVER只要將SQL語句組成字串,然後呼叫sp_executesql這個預存程序,就可以執行動態SQL語法。

sp_executesql執行可重複使用多次的 Transact-SQL 語句或批次,或動態建立的語句。 Transact-SQL 語句或批次可以包含內嵌參數。

語法

1
2
3
4
5
sp_executesql [ @stmt = ] statement  
[   
  { , [ @params = ] N'@parameter_name data_type [ OUT | OUTPUT ][ ,...n ]' }   
     { , [ @param1 = ] 'value1' [ ,...n ] }  
]

範例1:執行簡單 SELECT 語句

sp_executesql執行簡單 SELECT 語句

下列範例會建立並執行簡單 SELECT 語句,其中包含名為的 @level內嵌參數。

1
2
3
4
5
6
-- Uses AdventureWorks2022
EXECUTE sp_executesql   
    N'SELECT * FROM AdventureWorksPDW2012.dbo.DimEmployee   
    WHERE EmployeeKey = @level',  
    N'@level TINYINT',  
    @level = 109;

範例2

可以指定資料表名稱,並傳回資料表筆數的預存程序

1
2
3
4
5
6
7
8
9
--可以指定資料表名稱,並傳回資料表筆數的預存程序
create or alter proc uspGetCount
    @table_name varchar(20) --宣告傳入的參數(資料表名)
as
declare @sql_string nvarchar(100) --宣告變數(用來存入組好的SQL語句)
begin
    set @sql_string = N'select count(1) from ' + @table_name --組SQL字串
    exec sp_executesql @sql_string --執行SQL語句
end

執行sp:

1
2
3
4
exec uspGetCount N'商品清單'

--執行結果
--13

MSDN - sp_executesql (Transact-SQL)

This post is licensed under CC BY 4.0 by the author.