1

我已经完成了很多返回表格的函数,但不知何故,这个函数一直给我一个错误,Begin我无法弄清楚为什么。我的where语句存储在一个表中。这个函数我想传入一个值和 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 
4

2 回答 2

3

您不能在函数中使用动态 SQL,因此您无法通过 TSQL TVF 执行此操作。

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

于 2012-10-02T18:22:06.147 回答
0

你为什么不把这个逻辑包装在一个存储过程中呢?如果需要将 sproc 的结果放入表中,可以使用 INSERT INTO EXEC

INSERT INTO
yourTable(col1, col2, col3)
EXEC Testtesttest @employeeID, @sqlWhereStatement 
于 2012-10-02T19:31:28.077 回答