web-dev-qa-db-ja.com

execの結果をsql変数に割り当てる方法は?

Exec呼び出しの結果をSQLの変数にどのように割り当てますか? up_GetBusinessDayというストアドプロシージャがあり、単一の日付を返します。

このようなことをすることができます:

exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1
94
Prabhu

私は常に戻り値を使用してエラーステータスを返します。 1つの値を返す必要がある場合は、出力パラメーターを使用します。

oUTPUTパラメータを使用したスト​​アドプロシージャのサンプル:

CREATE PROCEDURE YourStoredProcedure 
(
    @Param1    int
   ,@Param2    varchar(5)
   ,@Param3    datetime OUTPUT
)
AS
IF ISNULL(@Param1,0)>5
BEGIN
    SET @Param3=GETDATE()
END
ELSE
BEGIN
    SET @Param3='1/1/2010'
END
RETURN 0
GO

oUTPUTパラメータを使用して、ストアドプロシージャを呼び出します。

DECLARE @OutputParameter  datetime
       ,@ReturnValue      int

EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT
PRINT @ReturnValue
PRINT CONVERT(char(23),@OutputParameter ,121)

出力:

0
2010-01-01 00:00:00.000
86
KM.

これは、単に整数を返すだけの場合に機能します。

DECLARE @ResultForPos INT 
EXEC @ResultForPos = storedprocedureName 'InputParameter'
SELECT @ResultForPos
49
Siddhesh Bondre
declare @EventId int

CREATE TABLE #EventId (EventId int)

insert into #EventId exec rptInputEventId

set @EventId = (select * from #EventId)

drop table #EventId 
27
AZ Chad

documentation から(SQL-Serverを使用すると仮定):

USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO

はい、そうです。

6
Peter Lang