SQL函数获取一个SQL字符串,执行该字符串并返回表

SQL函数获取一个SQL字符串,执行该字符串并返回表,sql,sql-server,tsql,sql-function,Sql,Sql Server,Tsql,Sql Function,我已经完成了很多返回表的函数,但不知何故,这个函数一直在Begin处给我一个错误,我一辈子都不知道为什么。我的其中语句存储在表中。这个函数我想传入一个值和where语句 CREATE FUNCTION dbo.Testtesttest(@employeeID AS INT, @sqlWhereStatement AS VARCHAR(max)) Returns TABLE BEGIN DECLARE

我已经完成了很多返回表的函数,但不知何故,这个函数一直在
Begin
处给我一个错误,我一辈子都不知道为什么。我的
其中
语句存储在表中。这个函数我想传入一个值和where语句

CREATE FUNCTION dbo.Testtesttest(@employeeID        AS INT,
                                 @sqlWhereStatement AS VARCHAR(max))
Returns TABLE
  BEGIN
      DECLARE @mySQLStatement VARCHAR(max)

      SET @mySQLStatement = 'Set Quoted_Identifier OFF Select '
                           + CONVERT(VARCHAR, @employeeID) + ',* from (
        select m.ManagerID, m.Name,m.Email,e.BU,
        e.PSC from m inner join e on m.ManagerID = e.EmployeeID
        group by m.ManagerID, m.Name,m.Email,e.BU,e.SC,
        e.PSC) x where ' + @sqlWhereStatement

      EXEC(@mySQLStatement)

      RETURN
  END 

您不能在函数中使用动态SQL,因此您试图通过TSQL TVF执行的操作是不可能的


也许CLR UDF可以做这样的事情,但无论如何我会找到一种不同的方法。

为什么不将该逻辑包装到存储过程中呢?如果需要将存储过程的结果放入表中,可以使用INSERT into EXEC

INSERT INTO
yourTable(col1, col2, col3)
EXEC Testtesttest @employeeID, @sqlWhereStatement 

如果我有一个返回完整sql字符串的函数,我可以执行这个exec(myFunctionThatReturnSQLString)吗?但遗憾的是,这不能很好地工作:(有什么想法吗?@chungtinhlakho-你没有真正解释你的根本问题。只是你提出的解决方案,这是不可能的,但是