web-dev-qa-db-ja.com

一時テーブルなしで別のストアドプロシージャからストアドプロシージャ(パラメータ付き)を呼び出す方法

プロシージャAを保存し、@mydateパラメータを渡すことでAからストアプロシージャBを呼び出したい。ストアドプロシージャBは、プロシージャAでさらに使用できる行セットを返します。

Googleでこれを調査しましたが、一時テーブルを使用しなければ何も見つかりませんでした。一時テーブルなしでこれを取得する簡単な方法はありますか。

P.S .:ストアドプロシージャをAとして、関数をBとして簡単に実行してみました。しかし、ストアドプロシージャを使用するだけでそれを実現できるかどうかを知りたいです。

21
SQLNewBee
 Create PROCEDURE  Stored_Procedure_Name_2
  (
  @param1 int = 5  ,
  @param2 varchar(max),
  @param3 varchar(max)

 )
AS


DECLARE @Table TABLE
(
   /*TABLE DEFINITION*/
   id int,
   name varchar(max),
   address varchar(max)
)

INSERT INTO @Table 
EXEC Stored_Procedure_Name_1 @param1 , @param2 = 'Raju' ,@param3 =@param3

SELECT id ,name ,address  FROM @Table  
14
Arun CM

Executeコマンドを呼び出すだけです。

EXEC spDoSomthing @myDate

編集

データを返したいので、それは少し難しいです。代わりに、データを返すユーザー定義関数を使用できます。

8
Ed B

ストアドプロシージャB内でこのようなストアドプロシージャを呼び出すことができます。

CREATE PROCEDURE spA
@myDate DATETIME
AS
    EXEC spB @myDate

RETURN 0
4
Nagu_R

プロシージャAで一時テーブルの代わりにテーブル変数を作成し、プロシージャBを実行して、以下のクエリで一時テーブルに挿入できます。

DECLARE @T TABLE
(
TABLE DEFINITION
)
.
.
.
INSERT INTO @T
EXEC B @MYDATE

そして操作を続行します。

1
Amir Keshavarz