У меня есть кусок динамического SQL, который мне нужно выполнить, затем мне нужно сохранить результат в переменной.
Я знаю, что могу использовать, sp_executesql
но не могу найти четких примеров того, как это сделать.
tsql
dynamic-sql
JohnIdol
источник
источник
@retvalOUT=@retval OUTPUT
? Разве третий параметр неsp_executesql
должен быть справедливым@retval OUTPUT
?EXEC sp_executesql @sSQL, @ParmDefinition, @retval OUTPUT;
источник
insert into @tab
. Если вы попытаетесьinsert into @tab
запустить несколькоexecute sp_executesql
, с другим sql,select * from @tab
показывает только результаты первого выполненияисточник
Объявите @variable int
Exec @variable = proc_name
источник
Возвращаемые значения обычно используются не для «возврата» результата, а для возврата success (0) или номера ошибки (1-65K). Все вышеперечисленное, по-видимому, указывает на то, что sp_executesql не возвращает значение, что является неправильным. sp_executesql вернет 0 в случае успеха и любой другой номер в случае неудачи.
Ниже @i вернет 2727
SSMS покажет это сообщение 2727, уровень 11, состояние 1, строка 1 Не удается найти индекс «NonExistantStaticsName».
источник
ОБЪЯВИТЬ @ValueTable TABLE (значение VARCHAR (100))
источник
Если вы хотите вернуть более 1 значения, используйте это:
возвращаемые значения находятся в @retIndex и @retText
источник
Вот что вы можете попробовать
источник
Это было давно, поэтому не уверен, что это все еще необходимо, но вы можете использовать переменную @@ ROWCOUNT, чтобы увидеть, сколько строк было затронуто предыдущим оператором sql.
Это полезно, например, когда вы создаете динамический оператор Update и запускаете его с помощью exec. @@ ROWCOUNT покажет, сколько строк было обновлено.
Вот определение
источник
Это сработало для меня:
источник