ALTER FUNCTION FnVersion
(@DBName NVARCHAR(255),
@ID INT)
RETURNS @TABLE TABLE (iD INT, VersionNo INT)
AS
BEGIN
DECLARE @SQL VARCHAR(2000)
SET @SQL = @DBName
SELECT @SQL = 'SELECT iD, VersionNo FROM' + @DBName + '.dbo.ConfigInfo WHERE IdValue = @ID'
EXECUTE SQL
RETURN;
END
数据库名称将作为输入传递,查询将在动态数据库上完成 exec SQL语句的上述逻辑导致错误。
从动态数据库实现动态查询的方法是什么?
答案 0 :(得分:0)
您不能在SQL Function中使用动态SQL。但是将其作为过程的一部分,并通过远程过程调用将这些数据存储到临时表中。使用远程过程比使用远程查询会更好。
您可以将INSERT INTO与EXEC命令一起使用。并使用您的逻辑操作临时表。会是更好的方法。