我想根据存储过程中收到的 INPUT 在 WHERE 子句中使用单独的列。
如果 TYPE_DEFINITION = 'SUP' 则使用 SUPPLIER 列
如果 TYPE_DEFINITION = 'CAT' 则使用 CATEGORY 列
我知道我可以SELECT
使用一个语句编写两个单独的 's 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;
/