如何从函数内部的动态数据库名称查询

时间:2019-07-09 03:09:22

标签: sql-server sql-function

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语句的上述逻辑导致错误。

从动态数据库实现动态查询的方法是什么?

1 个答案:

答案 0 :(得分:0)

您不能在SQL Function中使用动态SQL。但是将其作为过程的一部分,并通过远程过程调用将这些数据存储到临时表中。使用远程过程比使用远程查询会更好。

您可以将INSERT INTO与EXEC命令一起使用。并使用您的逻辑操作临时表。会是更好的方法。