MySQLで2つのプロキュデレを1つに集約するにはどうすればよいですか?
P粉998920744
P粉998920744 2024-01-29 10:39:39
0
2
395

ほぼ同じに見える 2 つのプログラムがあります。 1 人は locationprice を受け取ってアクションを実行し、もう 1 人は experienceprice を受け取ります。 < /p> ###初め:### リーリー ###二番目:### リーリー

ご覧のとおり、

WHERE

句のみが変更されています。 MySQL では、これら 2 つのプロシージャを 1 つに集約することは可能ですか?同じように見えても変更されるだけのプログラムが 5 つほどあるからです。

WHERE

句では、ケースごとに個別の手順を実行するのが煩わしいと感じます。

P粉998920744
P粉998920744

全員に返信(2)
P粉315680565

IFNULL を使用できます。 experience または id_location の値を渡し、他の値には NULL を使用します。

パラメーターが列名と区別されるように、パラメーターの命名スキーム (ここでは in__-prefix) を使用することもお勧めします。

リーリー
いいねを押す +0
P粉951914381

たとえば、次のように使用できます:

リーリー

提供された IN エクスペリエンス INT が値に設定されている場合、その条件が適用されます。このパラメータに NULL を指定すると、IN id_location INT の条件が適用されます。

注 - SP には 4 つではなく 5 つのパラメータがあります。

PS. SP には単一の SQL ステートメントが含まれているため、BEGIN-END と DELIMITER は必要ありません。

PPS。同様のアプローチを使用して、条件の一方または両方を適用する、またはどちらも適用しない SP を作成できます。たとえば、次のようになります:

リーリー ###購買力平価。 2 つの別個の関数を使用したいが、コードのコピーがある場合 (たとえば、これらの関数名が一連のコードですでに使用されている場合)、次のようにすることができます:

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート