0

proc1 sp_DateFromRange返品日を保存しました。proc2他のデータを含むテーブルを返す別のストアがあります..storedproc2日付パラメーター@datefrom@dateto.

今、私はに割り当てる必要がありstoredproc1ます@datefromstoredproc2

配属は可能ですか

4

3 に答える 3

1

いいえ、あなたが望むようにはできません。

ストアド プロシージャ間でデータを共有する方法に関する興味深い記事を次に示します。

ストアド プロシージャ間でデータを共有する方法

私の意見では、最も簡単な方法は、出力パラメーターまたは一時テーブルを使用することです。詳細については、リンクを確認してください。出力パラメーターを使用する簡単な方法を次に示します。

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

共有一時テーブルを使用することもできます。私が提供した記事で実装を見つけることができます。

幸運を!

于 2012-09-13T07:08:27.370 に答える
0

パラメータ@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
于 2012-09-13T07:12:02.763 に答える
0

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
于 2012-09-13T07:12:48.990 に答える