sp_executesql 可動態傳入傳出參數

Posted sdikerdong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sp_executesql 可動態傳入傳出參數相关的知识,希望对你有一定的参考价值。

在做一個功能時,要求參數是動態傳入并且有參數可以動態傳出,字符串動態組成的sql以前只是知道 用Execute去執行,今 天發現sp_executesql這個是可以達成這個目 的。

ALTER PROCEDURE [dbo].[SLMFormateExportCenterFields]
-- Add the parameters for the stored procedure here
@TMP varchar(max),
@fields nvarchar(max) output
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

--DECLARE @TMP VARCHAR(MAX)
--SET @TMP = ‘sanow,orgFeeCode,orgName,FRCode,FRName,payDatetime,humanCategory,EmpCount,SSS47,SSS91,payYear,payMonth,orgSystemID,refno1,refno2,salaryType‘

DECLARE @sqlDy nvarchar(max)

SET @fields = ‘‘
SET @sqlDy = ‘
DECLARE @ITEMNO VARCHAR(20), @ITEMNAME VARCHAR(50)

DECLARE A CURSOR FOR
SELECT itemno, itemname FROM eHR3.dbo.E9SLMUploadCenterItems WHERE forexport = 1 ORDER BY sort1

OPEN A
FETCH NEXT FROM A
INTO @ITEMNO, @ITEMNAME

WHILE @@FETCH_STATUS = 0
BEGIN
IF CHARINDEX(@ITEMNO, @TMP,0) > 0
BEGIN
SET @fields = @fields + @ITEMNO + ‘‘ AS ‘‘ + ‘‘‘‘‘‘‘‘+ @ITEMNAME + ‘‘‘‘‘‘‘‘ + ‘‘,‘‘
END

FETCH NEXT FROM A
INTO @ITEMNO, @ITEMNAME
END
CLOSE A
DEALLOCATE A‘
exec sp_executesql @sqlDy, N‘@TMP varchar(max),@fields nvarchar(max) output‘, @TMP, @fields output
SET @fields = SUBSTRING(@fields,0, LEN(@fields))

RETURN
END

以上是关于sp_executesql 可動態傳入傳出參數的主要内容,如果未能解决你的问题,请参考以下文章

Python开发 基礎知識 2.變量 ( *arg, **kwargs )

sp_executesql 期望语句...好吧,我给它

Huawei Ensp 動態靜態路由實踐

動態Sql的概念

動態Sql的概念

動態Sql的概念