У меня есть еще один пост с более подробным кодом, но я думаю, что моя проблема заключается в следующей логике. Возможно ли иметь хранимую процедуру, вызвать другую хранимую процедуру, а вызываемая процедура возвращает строку, которая будет использоваться в первой хранимой процедуре?Возвращаемая строка с сохраненной процедурой
Пример:
ALTER PROCEDURE [dbo].[SP1]
-- Add the parameters for the stored procedure here
@output nvarchar(30)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @SP2Input nvarchar(30) = 'Input';
Declare @SP2Output nvarchar(30);
Execute @SP2Output = SP2 @SP2Input, @SP2Output;
If @SP2Output = 'Success'
Begin
Set @output = 'This worked';
End
Else
Begin
Set @output = 'This did not work';
End
Select @output;
END
Вот следующая хранимая процедура:
ALTER PROCEDURE [dbo].[SP2]
-- Add the parameters for the stored procedure here
@input nvarchar(30),
@output nvarchar(30) out
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
If @input = 'Input'
Begin
Set @output = 'Success';
End
Else
Begin
Set @output = 'Fail';
End
Select @output;
END
Итак, что бы получить вернулся к тому, что вызывает хранимую процедуру SP1?
Declare @output nvarchar(30);
Execute SP1 @output;
Я бы предположил, что «Это сработало» вернется? Однако возвращены два результата: 1) Успех 2) Это не сработало
Что я делаю неправильно?
Может попытаться изменить вызов SP ('Выполнить @ SP2Output = SP2 @ SP2Input, @ SP2Output; ') с чем-то похожим, который отображается на странице [MSDN] (http://msdn.microsoft.com/en-us/library/ms187004 (v = sql.105) .aspx)? – Caramiriel
@Caramiriel - Это сработало. Спасибо. – user2511772