ルーチンの性質の評価は、作成者の 「 誠実さ」に基づいています。 を参照してください。 コードのポイントは、 DELIMITER を変更するところです。 関数が決定的であることを宣言するには、明示的に DETERMINISTIC を指定する必要があります。 例として、以下ファンクションを作成してみます。 バイナリロギングが有効になっている場合、 DETERMINISTIC 特性は、MySQL がどのルーチン定義を受け入れるかに影響を与えます。 次の例は、 OUT パラメータを使用する単純なストアドプロシージャーを示しています。
もっと今回はMySQLのストアドプロシージャの使い方だけではなく、 生PHPで記載したときとのパフォーマンスを比較してみたいと思います。 ここでは MySQL のストアド・プロシージャを作る方法を紹介します。 元々、ストアドプロシージャを使おうと思ったきっかけが今回書く内容で、insertやdeleteをループさせて実行するストアドプロシージャを作りたかったんです。 SUM COUNT などの標準関数と同様の形式で呼び出します。
もっと非決定的なルーチンを DETERMINISTIC として宣言すると、オプティマイザが正しくない実行計画を選択するために、予期しない結果を招くことがあります。 insertやupdateの一括処理でできれば一番速いのですが、1レコードずつループで処理しなければならない場面では、カーソルが便利です。 user; END; このプロシージャーには、それがどのユーザーによって定義されている場合でも、 'admin' 'localhost' の DEFINER アカウントが割り当てられます。 SHOW CREATE PROCEDURE で確認できます。
もっと00 sec ERROR: No query specified 呼び出し CALLステートメント で作成したプロシージャを呼び出してみます。 最初のカーソルで複数列取得した場合はintoの後に格納先変数をカンマ区切りで順番に複数書く。 注記 IN、 OUT、または INOUT としてのパラメータの指定は、 PROCEDURE に対してのみ有効です。
もっと