存储过程返回2个结果数据集 - 有没有办法只将第一个数据集插入变量但仍然显示第二个?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程返回2个结果数据集 - 有没有办法只将第一个数据集插入变量但仍然显示第二个?相关的知识,希望对你有一定的参考价值。
我有一个运行一系列测试的父存储过程。在此过程中,父级会创建一个“日志”记录,并在实际执行测试之前将其设置为更新。
测试是一个存储过程,它根据结果返回“Y”或“N”,并返回返回所有记录的辅助结果集。我希望父存储过程抓住“Y”或“N”并将其粘贴到日志表中,但也显示次要结果集。
我打算将update语句放在子存储过程(测试本身)中,但是我需要为每次调用传递LogID。理想情况下,我只想从第一个数据集“Y”或“N”中获取结果并使用它,但我不确定这是否可行。
答案
使用OUTPUT
参数返回结果:
ALTER PROCEDURE dbo.TestProcedure
@ResultSuccessful BIT OUTPUT
AS
BEGIN
-- Testing stuff
IF (/*Test OK*/)
SET @ResultSuccessful = 1
ELSE
SET @ResultSuccessful = 0
-- Detailed results
SELECT
*
FROM
Results
END
像这样打电话给SP:
DECLARE @TestOK BIT
-- Will display results from SELECT
EXEC dbo.TestProcedure
@ResultSuccessful = @TestOK OUTPUT
IF @TestOK = 1
-- Do stuff if OK
ELSE
-- Do stuff if not
另一答案
如果不清楚,这里有一个快速示例,说明如何从一个存储过程返回两个结果。
CREATE PROCEDURE dbo.dummy (
@id INT,
@answer CHAR(1) OUTPUT)
AS
BEGIN
SET NOCOUNT ON;
--First result
SELECT @answer = 'Y';
--Second result
SELECT @id AS id, 'dog' AS pet;
END;
GO
DECLARE @answer CHAR(1);
EXEC dbo.dummy 1, @answer OUTPUT;
SELECT @answer;
GO
DROP PROCEDURE dbo.dummy;
以上是关于存储过程返回2个结果数据集 - 有没有办法只将第一个数据集插入变量但仍然显示第二个?的主要内容,如果未能解决你的问题,请参考以下文章