自定义函数执行动态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‘
    SET @strSQL += ‘ WHERE tb.FormID= ‘‘‘[email protected]+‘‘‘‘
     
    DECLARE @spvalue VARCHAR(20)
    EXEC sp_executesql @strSQL,N‘@spvalue VARCHAR(20) out‘,@spvalue OUTPUT
     
    select FormID,@spvalue FROM tFormMoney
END

以上是关于自定义函数执行动态sql语句的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis超强大的动态SQL大全

Mybatis超强大的动态SQL大全

怎样用sql server自定义函数,实现动态的sql,返回一个table类型

php 一个自定义的try..catch包装器代码片段,用于执行模型函数,使其成为一个单行函数调用

SQL Server创建存储过程——动态SQL

SQL Server创建存储过程——动态SQL