自定义函数执行动态sql语句
Posted 张好好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义函数执行动态sql语句相关的知识,希望对你有一定的参考价值。
--函数中不能调用动态SQL,使用用存储过程吧。如果还要对函数做其他操作,换成存储过程不方便,可以考虑把其他操作一起封装在存储过程里面。如:
create
proc [dbo].[FUN_YSCL_GetSpvalue]
@FormID
VARCHAR
(200)
AS
BEGIN
DECLARE
@TableID
VARCHAR
(20)
SELECT
@TableID = tb.vcTableID
FROM
tG10Money tm
LEFT
JOIN
tG10Tables tb
ON
tm.iFormType = tb.ID
WHERE
vcFormID = @FormID
DECLARE
@strSQL NVARCHAR(2000)
SET
@strSQL =
‘‘
SET
@strSQL +=
‘ SELECT ‘
SET
@strSQL +=
‘@spvalue=tb.SPValue‘
SET
@strSQL +=
‘ FROM ‘
+ @TableID +
‘ tb‘
SET
@strSQL +=
‘ RIGHT JOIN ( SELECT DISTINCT‘
SET
@strSQL +=
‘ FormID ,‘
SET
@strSQL +=
‘ MAX(WFNodeIndex) AS maxnode‘
SET
@strSQL +=
‘ FROM tFS1001‘
SET
@strSQL +=
‘ WHERE RowType = 1‘
SET
@strSQL +=
‘ GROUP BY WFID ,‘
SET
@strSQL +=
‘ FormID‘
SET
@strSQL +=
‘ ) maxnode‘
SET
@strSQL +=
‘ ON tb.FormID = maxnode.FormID‘
SET
@strSQL +=
‘ AND tb.WFNodeIndex = maxnode.maxnode‘
DECLARE
@spvalue
VARCHAR
(20)
EXEC
sp_executesql @strSQL,N
‘@spvalue VARCHAR(20) out‘
,@spvalue
OUTPUT
select
FormID,@spvalue
FROM
tFormMoney
END
以上是关于自定义函数执行动态sql语句的主要内容,如果未能解决你的问题,请参考以下文章
怎样用sql server自定义函数,实现动态的sql,返回一个table类型