2011-12-09 35 views
0

質問は比較的簡単です。MySQLでストアドプロシージャをカスケードする

MySQLでプロシージャを呼び出すことは可能ですか?

例:

作成した2つの手順があります:PROC1およびPROC2

はPROC1の中で、私はこのようにprocの2 を呼び出す:

BEGIN 

IF (CALL ConsultConsoleAvailableTime(`StartTime`, `PlusTime`) IS NULL) THEN 
    SELECT 'error'; 
END IF; 

END; 

それは可能ですか?どうやって?ここで働かなかった。 :D

EDIT1:

1318 - PROCEDURE sistemajogosxbox.ConsultConsoleAvailableTimeの引数の数が正しくありません。 、3期待される2

EDIT2ました:

1172 - 結果は複数の行

そして今から成っていましたか?

+0

'Edit1'のためにそれは' ConsultConsoleAvailableTime'あなたは2つだけ供給するための3つのパラメータ、期待し、あなたの手順ようだ:彼らが満たされた '' StartTime'とPlusTime' – Nonym

+0

を。私はこのメッセージがなぜわからないのですか? – Richard

+0

私はここで少し間違いをしました。私は修理しています。 私はあなたが正しいとあなたの応答を信じています。 – Richard

答えて

-1

別のストアドプロシージャから1つのストアドプロシージャを呼び出すことができます。私は以前にそれをしてきました。

proc2()には、関数のように戻り値がないので、私はあなたの例が駄目だと思います。おそらく、手順の代わりにproc2()を関数にする必要があります。ちょうど別内のストアドプロシージャを使用する1つの方法を説明するための

2

:そのoutパラメータに値を設定し、その値を手順setOutputParameter(および可変にするためのプレースホルダが作成されsetOutputParameter

DELIMITER // 
CREATE PROCEDURE setOutputParameter (
    OUT OutputParameter VARCHAR(20) 
) 
BEGIN 

    SELECT 'output' INTO OutputParameter; 

END// 
DELIMITER ; 

DELIMITER // 
CREATE PROCEDURE useOutputParameter() 
BEGIN 
    CALL setOutputParameter(@tmpOutputParameter); 

    IF @tmpOutputParameter = 'output' 
     THEN SELECT 'string: output was returned' AS res; 
    END IF; 

END// 
DELIMITER ; 

手順:@tmpOutputParameterこれはIF..THEN..ステートメントでチェックされます

これはやはり最も単純な例ではないかもしれませんし、プロシージャ(可能な代替手段として機能を使用する)でさえあり得ますし、値tを返す他の方法がありますストアドプロシージャ内で1つのストアドプロシージャの出力を利用することを目的とするストアドプロシージャ内で使用すること。

[編集]投稿コメントに基づいて:

INOUT又はOUTパラメータ(ストアドプロシージャでのみ利用可能ではなく、機能)ストアドプロシージャ内がCALL storedprocedurename..コマンドを介して、ストアドプロシージャの呼び出し元がユーザに合格することを可能にします呼び出されたプロシージャのパラメータの位置へのoutの定義済みの変数 - 同じプロシージャが実行され、値が渡されます。呼び出されたプロシージャの実行後、ユーザー定義変数に渡された値outが使用可能になります。上記の例では、ストアドプロシージャsetOutputParameteroutパラメータOutputParameterには、ストアドプロシージャsetOutputParameterが値を渡すため、呼び出されると変数が渡される必要があります。したがって、ストアドプロシージャuseOutputParameterのコードがCALL setOutputParameter(@tmpOutputParameter);経由で呼び出されると、outパラメータとして機能するために渡された変数:@tmpOutputParameterには、という文字列値が含まれ、useOutputParameterプロシージャ内のコードの残りの部分に使用できます。もっとここに

読む:http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html

+0

出力パラメータとは何ですか? – Richard

+0

MySQLストアドプロシージャの出力パラメータは、ストアドプロシージャ内から値を渡した後、同じストアドプロシージャを実行した後にアクセスできるパラメータです。上のケースでは、私の投稿を修正してください。 – Nonym

+0

@リチャード、私は私の投稿を更新しました。何とか助けてくれることを願っています。 – Nonym

関連する問題