Следующий запрос sql является частью запроса, который у меня есть. Идея состоит в том, что в результирующем наборе будет цикл (курсор), вставляющий записи один за другим в другую таблицу. Это динамический sql из-за причин, не полностью известных мне, но с которыми я должен работать. Для ясности я оставил курсор и много столбцов.OUTPUT в динамическом SQL
DECLARE @db_name VARCHAR(500)
SET @db_name = '[TESTDB].DBO.[TestTable]'
DECLARE @guid UNIQUEIDENTIFIER
SET @guid = '15D372FC-63AF-415B-8404-46A15ABE9488'
DECLARE @sql NVARCHAR(max)
SET @sql = 'INSERT INTO dbo.OtherTable
(
guid,
description
)
SELECT NEWID(),
description
FROM ' + @db_name
DECLARE @result varchar(max)
EXEC sp_executesql @sql,
N'OUTPUT',
OUTPUT;
Так идея заключается в том, что записи из результата заявления получает накинуты, и данные из каждой строки вставляются в новую строку в OtherTable. После того, как запись вставлена в OtherTable, уникальный идентификатор, который был сгенерирован с помощью NEWID() (который, разумеется, является руководством, хранящимся в varchar (40)), должен быть захвачен, чтобы он мог быть записан в другой таблице.
Я бы рад, если вам поможет. Спасибо!
«Как только запись вставлена в OtherTable, полученный первичный ключ (который, разумеется, является направляющим, хранящимся в varchar (40)), должен быть записан в другой таблице». Можете ли вы объяснить это немного больше и что вы ожидаете в выходе. @AyatollahOfRockNRolla – Sreemat
Вы посмотрели на триггеры? –
Я бы рекомендовал сделать это сначала без какого-либо динамического SQL, просто чтобы понять, что происходит. Динамический SQL затрудняет составление запросов. Когда вы хорошо понимаете, как это работает в принципе, изучите его преобразование в динамический SQL. –