我有一個帶引數的函式。如果我在 where 子句中將 null 作為引數傳遞,我希望它帶回所有結果,例如
CREATE OR REPLACE FUNCTION ABC(" CUSTCODE" VARCHAR)
RETURNS TABLE ("CUSTOMER_CODE" VARCHAR, CUSTOMERNAME VARCHAR)
LANGUAGE SQL
AS '
SELECT CUSTOMER_CODE, CUSTOMERNAME FROM DIM_CUSTOMER
WHERE CUSTOMER_CODE = CUSTCODE
';
因此,如果 CUSTCODE 為 NULL 則帶回所有 CUSTOMER_CODE 幾乎就像忽略 where 子句
有人能指出我正確的方向嗎?
提前致謝!
萊昂
uj5u.com熱心網友回復:
根據戴的評論:
CREATE OR REPLACE TABLE DIM_CUSTOMER(CUSTOMER_CODE text, CUSTOMERNAME text);
INSERT INTO DIM_CUSTOMER VALUES ('one', 'customer one'),('two', 'customer two');
CREATE OR REPLACE FUNCTION ABC(CUSTCODE VARCHAR)
RETURNS TABLE (CUSTOMER_CODE VARCHAR, CUSTOMERNAME VARCHAR)
LANGUAGE SQL
AS '
SELECT CUSTOMER_CODE, CUSTOMERNAME FROM DIM_CUSTOMER
WHERE CUSTCODE IS NULL OR CUSTOMER_CODE = CUSTCODE
';
SELECT * FROM TABLE(ABC('one'));
給出:
| CUSTOMER_CODE | 顧客姓名 |
|---|---|
| 一 | 客戶一 |
SELECT * FROM TABLE(ABC(null::text));
給出:
| CUSTOMER_CODE | 顧客姓名 |
|---|---|
| 一 | 客戶一 |
| 二 | 客戶二 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450545.html
