proc1
sp_DateFromRange
返品日を保存しました。proc2
他のデータを含むテーブルを返す別のストアがあります..storedproc2
日付パラメーター@datefrom
と@dateto
.
今、私はに割り当てる必要がありstoredproc1
ます@datefrom
storedproc2
配属は可能ですか
proc1
sp_DateFromRange
返品日を保存しました。proc2
他のデータを含むテーブルを返す別のストアがあります..storedproc2
日付パラメーター@datefrom
と@dateto
.
今、私はに割り当てる必要がありstoredproc1
ます@datefrom
storedproc2
配属は可能ですか
いいえ、あなたが望むようにはできません。
ストアド プロシージャ間でデータを共有する方法に関する興味深い記事を次に示します。
私の意見では、最も簡単な方法は、出力パラメーターまたは一時テーブルを使用することです。詳細については、リンクを確認してください。出力パラメーターを使用する簡単な方法を次に示します。
DECLARE @datefrom smalldatetime
Exec storedproc1 @datefrom OUTPUT
Exec storedproc2 @datefrom
ストアド プロシージャから結果セットを取得するために一時テーブルを使用する別の簡単な例を次に示します。
DECLARE @datefrom smalldatetime
CREATE TABLE #tmp (dateFrom smalldatetime)
INSERT #tmp
EXEC storedproc1
SELECT TOP 1 @datefrom = dateFrom FROM #tmp
Exec storedproc2 @datefrom
共有一時テーブルを使用することもできます。私が提供した記事で実装を見つけることができます。
幸運を!
パラメータ@datefrom
は の出力パラメータである必要がありますsp_DateFromRange
:
create procedure DateFromRange(
@datefrom datetime = null output
)
as begin
--body
end
そしてあなたは試すことができます:
declare @date datetime
exec sp_DateFromRange @date out
exec storedproc2 @datefrom = @date , @dateto = @value
or
exec storedproc2 @date, @value
編集:
結果セットの使用
declare @date datetime
exec @date = sp_DateFromRange
exec storedproc2 @datefrom = @date , @dateto = @value
or
exec storedproc2 @date, @value
insert ... exec
ストアド プロシージャの出力セットを取得するために使用できます。挿入するテーブルの定義は、ストアド プロシージャの出力と正確に一致する必要があります。
例えば:
if object_id('proc1') is not null
drop procedure proc1
if object_id('proc2') is not null
drop procedure proc2
go
create procedure proc1
as
select getdate() as col1
go
create procedure proc2
@col2 datetime
as
print 'Col2 = ' + cast(@col2 as varchar(24))
go
declare @sp_result table (col1 datetime)
insert @sp_result
exec proc1
declare @col1 datetime
select @col1 = col1
from @sp_result
exec proc2 @col1
これは以下を出力します:
(1 row(s) affected)
Col2 = Sep 13 2012 9:11AM