Я пытаюсь написать процедуру, которая вызывает SQL, вставленную в таблицу. Когда я выполняю эту процедуру, он возвращает определенное значение, и мне нужно его захватить. Ниже приведен пример:Возвращает значение, возвращаемое Dynamic SQL
Create Proc Temp_TEst
@ID int
as
BEGIN
Declare @SQL VARCHAR(8000)
Select @SQL=[sql] from Testtable where ID=1
/* PRINT @SQL
The above select returns the following:
Select COUNT(*) from TableTest_1 where [email protected]
*/
SET @SQL= REPLACE(@SQL,'@ID',@ID)
EXEC (@SQL)
END
Так что если число возвращений говорит 12351 строк. Это дало бы из результата, когда я выполнить процедуру, как:
EXEC Temp_Test 1;
мне нужно, чтобы захватить вывод в переменную внутри Создание блока процедуры, а затем использовать значение. Не могли бы вы посоветовать мне, как я могу подойти к этой проблеме.
Может быть, это поможет: [ссылка] (https://social.msdn.microsoft.com/Forums/sqlserver/en-US/6fd8778c-4fc1-4067 -bcb7-724d08af7144/set-the-result-of-execute-in-a-variable-? forum = transactsql) Я боюсь, что вы не можете использовать выбранный запрос как есть. – Matze
Если все ваши запросы в этой таблице выбирают только одно целое число, вы можете сделать что-то вроде этого: 'DECLARE @t TABLE (v INT); INSERT @t EXEC (@SQL); SELECT * FROM @ t'. В противном случае вам нужно будет развернуть таблицу temp в соответствии с набором возвращаемых значений. – Malk
Хотя ваш конкретный прецедент не подходит, эта ссылка может быть полезной http://www.sommarskog.se/share_data.html – Alejandro