0

我需要在另一个存储过程中执行一个存储过程,并将内部存储过程的结果用于外部存储过程。

简单如下。

SP1

CREATE PROCEDURE spExternal
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @intInternalResult INT

    SET intInternalResult= EXEC spInternal
END

SP 内部

CREATE PROCEDURE spInternal 
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 1+2
END
4

2 回答 2

1

我的朋友,您不能为未返回的变量赋值。您可以编写一个函数来完成存储过程 spInternal 的工作,该过程将返回一个值。否则你可以这样做:

CREATE PROCEDURE spInternal 
AS
BEGIN

    SELECT 1+2
END

CREATE PROCEDURE spExternal
AS
BEGIN

    DECLARE @intInternalResult INT
    CREATE TABLE #temp
    (
        Rslt int
    )
    INSERT INTO #temp (Rslt)
    EXEC spInternal

    SELECT @intInternalResult = Rslt
    FROM #temp
    DROP TABLE #temp
    PRINT @intInternalResult
END

EXEC spExternal

还有一件事,下次别忘了把@放在变量前面。

于 2012-08-03T07:29:04.767 回答
0

如果您的存储过程只返回一个整数值,请使用RETURN

create proc pInternal
as
begin
    return 2
end

然后您可以访问结果为

exec @intInternalResult = pInternal

如果要返回非整数或多个值,请使用OUTPUT参数

于 2012-08-03T08:05:50.950 回答