Как сделать запрос из динамического имени базы данных внутри функции - PullRequest
0 голосов
/ 09 июля 2019
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

Имя БД будет передано в качестве ввода, а запрос будет выполнен в динамической базе данных. Приведенная выше логика оператора SQL exec вызвала ошибку.

Как получить динамический запрос из динамической базы данных?

1 Ответ

0 голосов
/ 09 июля 2019

Нельзя использовать динамический SQL в функции SQL.но сделайте это частью процедуры и сохраните эти данные во временной таблице с удаленным вызовом процедуры.Производительность будет лучше использовать удаленную процедуру, а не удаленный запрос.

вы можете использовать INSERT INTO с командой EXEC.и манипулировать временной таблицей с вашей логикой.было бы лучше подойти.

...