Sql server 如何将存储过程返回值存储在表或变量中

Sql server 如何将存储过程返回值存储在表或变量中,sql-server,tsql,stored-procedures,sql-insert,Sql Server,Tsql,Stored Procedures,Sql Insert,我有一个存储过程,我想在其中存储由另一个存储过程返回的值,我将如何做。我试着用谷歌搜索,但没有成功。我的代码是: declare @t table (name varchar(100)) declare @MprNum varchar(20) insert @t exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain' select @MprNum=name from @t 我也试过: create table

我有一个存储过程,我想在其中存储由另一个存储过程返回的值,我将如何做。我试着用谷歌搜索,但没有成功。我的代码是:

declare @t table (name varchar(100))      
declare @MprNum varchar(20)      
insert @t exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'       
select @MprNum=name from @t 
我也试过:

create table #t(name varchar(100))
declare @MprNum varchar(20)
insert #t exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'
select @MprNum=name from #t 
但是没有成功。

试试这个

INSERT INTO #t
    EXEC usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'
试试这个

INSERT INTO #t
    EXEC usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'

如果您想将结果输出到变量,请使用如下脚本

--Procedure :
CREATE PROCEDURE usp_GetNextInvoice 
@MPRId int,
@MprNum int OUTPUT
AS  

    SET NOCOUNT ON;

    SELECT @MprNum = MprNum
    FROM YourTable T
     WHERE T.MPRId = @MPRId

RETURN
GO

-- Execution step
DECLARE @Result int;
EXECUTE usp_GetNextInvoice 10, @MprNum = @Result OUTPUT;
SELECT @Result

如果要将结果集输出到表中,请尝试使用以下脚本

--Procedure
CREATE PROCEDURE usp_GetNextInvoice 
@MPRId int
AS  

    SET NOCOUNT ON;

    SELECT *
    FROM YourTable T
     WHERE T.MPRId = @MPRId

RETURN
GO

--execution step
CREATE TABLE #T
(Col1 ...  -- column count should match with the output of the procedure
 ....)
GO

INSERT INTO #T
EXEC usp_GetNextInvoice 10

如果您想将结果输出到变量,请使用如下脚本

--Procedure :
CREATE PROCEDURE usp_GetNextInvoice 
@MPRId int,
@MprNum int OUTPUT
AS  

    SET NOCOUNT ON;

    SELECT @MprNum = MprNum
    FROM YourTable T
     WHERE T.MPRId = @MPRId

RETURN
GO

-- Execution step
DECLARE @Result int;
EXECUTE usp_GetNextInvoice 10, @MprNum = @Result OUTPUT;
SELECT @Result

如果要将结果集输出到表中,请尝试使用以下脚本

--Procedure
CREATE PROCEDURE usp_GetNextInvoice 
@MPRId int
AS  

    SET NOCOUNT ON;

    SELECT *
    FROM YourTable T
     WHERE T.MPRId = @MPRId

RETURN
GO

--execution step
CREATE TABLE #T
(Col1 ...  -- column count should match with the output of the procedure
 ....)
GO

INSERT INTO #T
EXEC usp_GetNextInvoice 10

此语句是否返回任何行

exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'

因为您尝试的代码是完美的….

此语句是否返回任何行

exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'

因为您尝试的代码是完美的……

失败是什么意思
usp_GetNextInvoice
如何返回该值,
返回
选择
?请显示该存储过程的相关详细信息。该值由select语句返回。
usp\u GetNextInvoice
如何返回该值,
return
select
?请显示该存储过程的相关详细信息。该值由select语句返回。我尝试了表插入,但未插入数据。未给出任何错误。但数据也不会插入表中。给出消息“0行生效”如果您在不使用INSERT命令的情况下执行过程,是否正在获取结果集??您还可以提供您的存储过程脚本吗?是的,当我执行过程时,它给了我这个值“STI-00001”。我尝试了表插入,但数据没有插入。没有给出错误。但数据也不会插入表中。给出消息“0行生效”如果您在不使用INSERT命令的情况下执行过程,是否正在获取结果集??您能提供您的存储过程脚本吗?是的,当我执行过程时,它会给我这个值“STI-00001”,请看我已经尝试过的问题。它不起作用。当你说“它不起作用”时,你的意思是1)你收到了一条错误消息,还是2)它成功执行,但你没有得到任何数据?程序给了我这个“STI-00001”,但它没有插入表中#t看看我已经尝试过的问题。它不工作。当你说“它不工作”时,你的意思是1)你收到一条错误消息,还是2)它成功执行但你没有得到任何数据?程序给我这个“STI-00001”,但它没有插入表中#tYes它返回这个值“STI-00001”是它返回这个值“STI-00001”