ストアド プロシージャで受け取った INPUT に基づいて、WHERE 句で個別の列を使用したい。
TYPE_DEFINITION = 'SUP' の場合、SUPPLIER 列を使用します
TYPE_DEFINITION = 'CAT' の場合、CATEGORY 列を使用します
SELECT
ステートメントを使用して2 つの別々の を記述できることはわかっていますCASE
が、それは非常に愚かで冗長です。それを行うよりクリーンな方法はありますか?
CREATE OR REPLACE PROCEDURE SG.STORED_PROCEDURE (
TYPE_DEFINITION IN VARCHAR2,
VALUE IN VARCHAR2,
STORELIST IN VARCHAR2)
AS
BEGIN
SELECT O.ORGNUMBER,
S.SKU,
FROM SKU S JOIN ORG O ON S.ORGID = O.ORGID
WHERE
AND O.ORGNUMBER IN (STORELIST)
AND (CASE TYPE_DEFINITION
WHEN 'SUP' THEN S.SUPPLIER = VALUE
ELSE S.CATEGORY = VALUE
END);
END;
/