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の結果をテーブルに取り込む必要がある場合は、INSERTINTOEXECを使用できます。

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