2017-06-03 9 views
0

私は2つのストアドプロシージャ - test_procとcalling_procを持っています。 procedure test_procがcalling_procの内部プロシージャと呼ばれています。プロシージャ内でプロシージャをコールすると返される結果を処理します

結果は次のようになります。

+-------+-------+-------+-------+ 
| test1 | test2 | test3 | test4 | 
+-------+-------+-------+-------+ 
|  1 |  2 |  3 |  4 | 
+-------+-------+-------+-------+ 

手順:

enter image description here

はです

が一つだけの行は次のようになりますcalling_proc(代わりの4行)、から返さ持つことが可能です:

create procedure test_proc 
as 
begin 
select 1 test1 
select 2 test2 
select 3 test3 
end 

create procedure calling_proc 
as 
begin 
exec test_proc 
select 4 test4 
end 
+0

は、最初のPROCでカンマで最後の2つの選択を交換してください。次に、exec test testの結果を一時テーブルに格納して、最終的なprocに参加させる必要があります – scsimon

+0

私に例を示してください。ストアドプロシージャコールの結果を一時テーブルに格納する方法がわかりません。 – FrenkyB

+0

各selectステートメントは結果セットを提供します。したがって、select文に複数のカラムが必要な場合は、コンマで区切ります。これは本当に基本的なSQLです。 https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql –

答えて

2

このようなもの... depeご使用の環境では、サーバーの設定を変更する必要があります。しかしOPENROWSET

SELECT * 
INTO #MyTempTable 
FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;', 
    'EXEC test_proc') 

SELECT *, 4 AS test4 
FROM #MyTempTable 

あるいは、このようなものを使用して...

CREATE #MyTempTable (test1 int, test2 int, test3 int, test4 int) 
INSERT INTO #MyTemptTable (test1,test2,test3) 
EXEC test_proc 

UPDATE #MyTempTable 
SET test4 = 4 
+0

私はこれが宿題であると確信しています。彼らは選択された声明を探していて、先生はこれを見て、初心者ではないことを知っています。 :)しかし、あなたは*質問に答えましたので、upvoteを持ってください! –

+0

@JacobH - 別の場所に行ってコメントしてください。 – FrenkyB

+0

何ですか?私は神経を打ったのですか?あなたはほとんど何の努力もしておらず、何の研究もせず、誰かがあなたのコードを書くことを望みます。 –