Назначение динамического имени таблицы и имени LinkedServer - PullRequest
0 голосов
/ 02 апреля 2019

Есть ли способ динамически изменить указанное имя таблицы, а также указанное имя LinkedServer, не вызывая ссылку на строку SQL удаленного Oracle (> 8000 символов) как скалярную переменную, что приводит к разрыву моего сценария?

INSERT INTO dbo.Table_1 EXEC ( @mySQL ) AT Linked_Server_1

1 Ответ

0 голосов
/ 02 апреля 2019

Вы делаете все утверждение динамическим, как:

DECLARE @s varchar(max)
SET @s = 'INSERT INTO dbo.Table_1 EXEC ( ''' + @mySQL + ''' ) AT Linked_Server_1'
EXEC( @s )

Вам может понадобиться экранировать любые апострофы в переменной @mySQL. Это становится сумасшедшим:

DECLARE @s varchar(max)
SET @s = 'INSERT INTO dbo.Table_1 EXEC ( ''' + replace(@mySQL, '''', '''''') + ''' ) AT Linked_Server_1'
EXEC( @s )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...