Использовать значение курсора для запроса внутри курсора - PullRequest
0 голосов
/ 28 января 2020

Я хотел бы сохранить некоторые представления, которые мы имеем на сервере БД А, в фиксированных таблицах на сервере БД Б. Мой план такой: я получаю все представления с сервера БД А и записываю их во вспомогательную таблицу на сервере БД. Б.

Затем я создаю Курсор, чтобы выполнить следующий запрос для каждого значения курсора: «выбрать * в DBServerB.dbo. @ CursorValue из DBServerA.dbo. @ CursorValue»

Мой текущий код выглядит так:

 declare @tView as nvarchar(128)


 DECLARE CursorViews CURSOR local fast_forward
    for
    select [name] from dbo.TablesforImport


Open CursorViews

fetch next from CursorViews into @tView
while (@@fetch_status = 0)
Begin
'Select * into [DBServerB].[DB].dbo.'+@tView +' FROM [DBServerA].[DB].[dbo].'+ @tView
fetch next from CursorViews into @tView
end;
close CursorViews
deallocate CursorViews

В настоящее время я изо всех сил пытаюсь заставить запрос работать. Любые идеи? :)

1 Ответ

0 голосов
/ 28 января 2020

Вы можете использовать это:

DECLARE cur CURSOR LOCAL FAST_FORWARD FOR
    SELECT
        name
    FROM
        TablesforImport
    OPEN cur;

    FETCH NEXT FROM cur INTO @name;

WHILE @@FETCH_STATUS = 0
BEGIN

    set @sql= 'SELECT * into [DBServerB].[DB].dbo.[' + @name + '] FROM [DBServerA].[DB].dbo.[' + @name + ']'

    exec sp_executesql @sql

FETCH NEXT FROM cur INTO @name;
end
close cur
deallocate cur
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...