sp executesql 可動態傳入傳出引數

2022-06-29 04:36:12 字數 1453 閱讀 6782

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

alter procedure [dbo].[slmformateexportcenterfields]

-- add the parameters for the stored procedure here

@tmp varchar(max),

@fields nvarchar(max) output

asbegin

-- 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 + '''''''' + '',''

endfetch next from a

into @itemno, @itemname

endclose 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介紹和使用

execute相信大家都用的用熟了,簡寫為exec,除了用來執行儲存過程,一般都用來執行動態sql sp executesql,sql2005中引入的新的系統儲存過程,也是用來處理動態sql的,如 exec sp executesql sql,n count int out,id varchar 2...

使用sp executesql動態給表加資料。

今天想盡辦法來實現如何使用動態sql返回的資料集。偶然間發現乙個可行的方法。不知是否有通用性。但是在我的測試環境裡可以執行。放到 裡也能執行。使用的資料庫是 mssql 2005 declare t table sku varchar 20 sp executesql需要nvarchar的。decl...

使用sp executesql動態給表加資料。

今天想盡辦法來實現如何使用動態sql返回的資料集。偶然間發現乙個可行的方法。不知是否有通用性。但是在我的測試環境裡可以執行。放到 裡也能執行。使用的資料庫是 mssql 2005 declare t table sku varchar 20 sp executesql需要nvarchar的。decl...