ほぼ同じに見える 2 つのプログラムがあります。 1 人は location と price を受け取ってアクションを実行し、もう 1 人は experience と price を受け取ります。 < /p> ###初め:### リーリー ###二番目:### リーリー
ご覧のとおり、
WHERE句のみが変更されています。 MySQL では、これら 2 つのプロシージャを 1 つに集約することは可能ですか?同じように見えても変更されるだけのプログラムが 5 つほどあるからです。
WHERE句では、ケースごとに個別の手順を実行するのが煩わしいと感じます。
IFNULL を使用できます。
experience
またはid_location
の値を渡し、他の値にはNULL
を使用します。パラメーターが列名と区別されるように、パラメーターの命名スキーム (ここでは
リーリーin__
-prefix) を使用することもお勧めします。たとえば、次のように使用できます:
リーリー提供された
IN エクスペリエンス INT
が値に設定されている場合、その条件が適用されます。このパラメータに NULL を指定すると、IN id_location INT
の条件が適用されます。注 - SP には 4 つではなく 5 つのパラメータがあります。
PS. SP には単一の SQL ステートメントが含まれているため、BEGIN-END と DELIMITER は必要ありません。PPS。同様のアプローチを使用して、条件の一方または両方を適用する、またはどちらも適用しない SP を作成できます。たとえば、次のようになります:
リーリー ###購買力平価。 2 つの別個の関数を使用したいが、コードのコピーがある場合 (たとえば、これらの関数名が一連のコードですでに使用されている場合)、次のようにすることができます:リーリー