SQL Server在SP中执行SP并使用内部SP调用的结果

时间:2012-08-03 05:20:20

标签: sql-server tsql stored-procedures

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

简单地说如下。

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

2 个答案:

答案 0 :(得分: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

还有一件事,下次不要忘记将@放在变量前面。

答案 1 :(得分:0)

如果存储过程仅返回单个整数值,请使用RETURN

create proc pInternal
as
begin
    return 2
end

然后您可以以

的形式访问结果
exec @intInternalResult = pInternal

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