執行帶嵌入參數的sql——sp_executesql

來源:互聯網
上載者:User
通常執行sql語句,大家用的都是exec,exec功能強大,但不支援嵌入參數,sp_executesql解決了這個問題。抄一段sqlserver協助:

sp_executesql

執行可以多次重用或動態產生的 Transact-SQL 陳述式或批處理。Transact-SQL 陳述式或批處理可以包含嵌入參數。

文法

sp_executesql [@stmt =] stmt
[
    
{, [@params =] N'@parameter_name  data_type [,...n]' }
    {, [@param1 =] 'value1' [,...n] }
]

參數

[@stmt =] stmt

包含 Transact-SQL 陳述式或批處理的 Unicode 字串,stmt 必須是可以隱式轉換為 ntext 的 Unicode 常量或變數。不允許使用更複雜的 Unicode 運算式(例如使用 + 運算子串聯兩個字串)。不允許使用字元常量。如果指定常量,則必須使用 N 作為首碼。例如,Unicode 常量 N'sp_who' 是有效,但是字元常量 'sp_who' 則無效。字串的大小僅受可用資料庫伺服器記憶體限制。

stmt 可以包含與變數名形式相同的參數,例如:

N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'

stmt 中包含的每個參數在 @params 參數定義列表和參數值列表中均必須有對應項。

[@params =] N'@parameter_name  data_type [,...n]'

字串,其中包含已嵌入到 stmt 中的所有參數的定義。該字串必須是可以隱式轉換為 ntext 的 Unicode 常量或變數。每個參數定義均由參數名和資料類型組成。n 是表明附加參數定義的預留位置。stmt 中指定的每個參數都必須在 @params 中定義。如果 stmt 中的 Transact-SQL 陳述式或批處理不包含參數,則不需要 @params。該參數的預設值為 NULL。

[@param1 =] 'value1'

參數字串中定義的第一個參數的值。該值可以是常量或變數。必須為 stmt 中包含的每個參數提供參數值。如果 stmt 中包含的 Transact-SQL 陳述式或批處理沒有參數,則不需要值。

n

附加參數的值的預留位置。這些值只能是常量或變數,而不能是更複雜的運算式,例如函數或使用運算子產生的運算式。

傳回碼值

0(成功)或 1(失敗)

結果集

從產生 SQL 字串的所有 SQL 陳述式返回結果集。

例子(感謝閩南交易網提供)

declare @user varchar(1000)
declare @moTable varchar(20)

select @moTable = 'MT_10'




declare @sql nvarchar(4000)  --定義變數,注意類型


set @sql='select @user = count(distinct userid)  from '+@moTable  --為變數賦值

--執行@sql中的語句
exec sp_executesql @sql
  ,N'@user varchar(1000) out'  --表示@sql中的語句包含了一個輸出參數
  ,@user out                   --和調用預存程序差不多,指定輸出參數值

print @user


 

 本例中,@moTable 為嵌入參數。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.