我正在尝试编写一个调用插入表中的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 ID=@ID
*/
SET @SQL= REPLACE(@SQL,'@ID',@ID)
EXEC (@SQL)
END
因此,如果计数返回说12351行。当我执行如下过程时,这会给出结果:
EXEC Temp_Test 1;
我需要在Create过程块内的变量中捕获输出,然后使用该值。能否指导我如何处理这个问题。
答案 0 :(得分:0)
Create Proc Temp_TEst
@ID int,
@OutPut INT OUTPUT
as
BEGIN
Declare @SQL NVARCHAR(MAX), @OutPut INT;
Select @SQL=[sql] from Testtable where ID = 1
SET @SQL= N' SELECT @OutPut = ( ' + @SQL + N' )'
Exec sp_executesql @SQL
,N'@ID INT , @OutPut INT OUTPUT'
,@ID
,@OutPut OUTPUT
END
执行Proc
DECLARE @Value INT;
exec Temp_TEst @ID = 1
,@OutPut = @value OUTPUT --<-- now this variable will be populated