sp_executesql接收返回多個參數實例

近日作項目中須要在EXEC執行Sql字符串時動態的傳入參數並接收返回值,因而研究了一下SqlServer中sp_executesql的使用方法,並作了以下的例子。
在使用sp_executesql動態傳入與接收返回參數時需注意如下事項,以免你們走彎路。
例子中@SQLString,@ParmDefinition必定要使用NVARCHAR類型,不然會報「過程須要參數 '××××' 爲 'ntext/nchar/nvarchar' 類型。」錯誤。
文檔中說這兩個變量賦值的字符串前要加N,我試了試,沒加也不報錯,不過你最好加上。畢竟人家是官方文檔麼。sql

--傳遞一個Int類型參數
DECLARE @IntVariable INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
SET @ParmDefinition = N'@level tinyint'
SET @IntVariable = 35
EXECUTE sp_executesql @SQLString, @ParmDefinition,@level = @IntVariable
--SET @IntVariable = 32
--EXECUTE sp_executesql @SQLString, @ParmDefinition,@level = @IntVariable
-------------------------------------------------------------------------------
--傳遞一個varchar類型參數
DECLARE @VarVariable varchar(500)
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE fname = @VarVariable'
SET @ParmDefinition = N'@VarVariable varchar(500)'
SET @VarVariable = 'Helen'
EXECUTE sp_executesql @SQLString, @ParmDefinition,@VarVariable
-------------------------------------------------------------------------------
--傳遞兩個參數,一個varchar類型參數接收返回值,一個Int類型參數
DECLARE @VarVariable VARCHAR(500)
DECLARE @IntVariable INT
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

SET @SQLString = N'SELECT @VarVariable = Count(*) FROM pubs.dbo.employee WHERE job_lvl = @IntVariable'
SET @IntVariable = 35
SET @ParmDefinition = N'@VarVariable VARCHAR(500) OUT,@IntVariable INT'
SET @VarVariable = 'Helen'
EXECUTE sp_executesql @SQLString,@ParmDefinition,@VarVariable OUT,@IntVariable
print @VarVariablespa

相關文章
相關標籤/搜索