2016-08-31 4 views
0

У меня есть хранимая процедура, в которой я хочу сохранить значение, возвращаемое другой хранимой процедурой, как бы я это сделал. Я пытался и искал Google, но не смог добиться успеха. Мой код:Как сохранить возвращаемое значение хранимой процедуры в таблице или переменной

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 

Но нет успеха.

+0

что это значит на успех не – TheGameiswar

+0

Как 'usp_GetNextInvoice' вернуть это значение,' 'return' или select'? Пожалуйста, укажите соответствующие данные этой хранимой процедуры. –

+0

Значение возвращается оператором select – Loyal

ответ

0

Попробуйте

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

просто посмотрите на вопрос, который я уже пробовал. это не работает. – Loyal

+0

Когда вы говорите «это не работает», вы имеете в виду: 1) вы получили сообщение об ошибке или 2) оно выполняется успешно, но вы не получили никаких данных? – Maruli

+0

процедура дает мне этот «STI-00001», но он не вставлен в таблицу #t – Loyal

0

Если вы хотите, чтобы выходной результат в переменной, сценарий, как показано ниже.

--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 

Если вы хотите, чтобы выход в ResultSet в к столу, попробуйте ниже сценарий

--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 
+0

Я пробовал вставку таблицы, но данные не вставлены – Loyal

+0

какая ошибка вы получаете? –

+0

Ошибка не указана. но данные также не вставлены в таблицу. дает сообщение «0 строк произведено» – Loyal

0

Является ли это утверждение вернуть любую строку?

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

Поскольку код, который вы пытались совершенен ....

+0

Да, оно возвращает это значение «STI-00001» – Loyal