我有一个复杂的存储过程,它返回一些带有一些计算值的行
SELECT CalculatedField1 ,
CalculatedField2 ,
...
FROM ...
WHERE CONDITION
这个 sproc(我们称之为 procA)根据 WHERE 条件返回可变数量的行。这工作正常。我现在需要做的是编写一个存储过程来获取这些返回行的摘要。
-- procB
SELECT SUM(CalculatedField1),
SELECT SUM(CalculatedField2),
...
FROM (EXEC procA params)
这可能吗?
编辑:创建一个临时表完成了这项工作,但是我在传递输出参数时遇到了问题。
CREATE PROCEDURE [dbo].[sprocB] (@prm INT = NULL OUTPUT)
AS
BEGIN
SET NOCOUNT ON;
SET @prm = 1
SELECT Id FROM dbo.AnyTable
END
CREATE PROCEDURE [dbo].[sprocA] (@prm INT = NULL OUTPUT)
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #temp (Id INT)
INSERT INTO #temp
EXEC sprocB @prm
SELECT Id FROM #temp
END
执行:
USE [MyDatabase]
GO
DECLARE @return_value int,
@prm int
EXEC @return_value = [dbo].[sprocA]
@prm = @prm OUTPUT
SELECT @prm as N'@prm'
SELECT 'Return Value' = @return_value
GO
临时表的结果正常,结果集已正确检索,但 @pem 值仍为 NULL。