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-你没有真正解释你的根本问题。只是你提出的解决方案,这是不可能的,但是