我有一個 srting p_balances 像:
balances|100095|5800870-989095-3|Mb|10240.0|10240|0.0|3|2021-11-22T10:12:31.000 06:00^balances|989011|5800870-989011-3|Min|16666666666666666|0|-16666666666666666|3|2021-11-22T10:12:31.000 06:00
我想在我的函式中回傳,如果 1 為真,則為 0 為假。我的表 service_id_map 包含列 npararam1 (其中有像989011, 100095, 100096等資料)
我寫的函式有效,但是有更優化的方法來獲得結果嗎?
CREATE OR REPLACE FUNCTION find_option_func(p_balances IN VARCHAR2)
RETURN NUMBER IS
v_result NUMBER;
ex EXCEPTION;
BEGIN
FOR i IN (SELECT t.npararam1 FROM service_id_map t) LOOP
BEGIN
IF instr(p_balances, '|' || i.npararam1 || '|') > 0 THEN
v_result := 1;
EXIT;
ELSE
RAISE ex;
END IF;
EXCEPTION
WHEN ex THEN
v_result := 0;
END;
END LOOP;
RETURN v_result;
END find_option_func;
uj5u.com熱心網友回復:
你可以這樣做:
CREATE OR REPLACE FUNCTION find_option_func(p_balances IN VARCHAR2)
RETURN NUMBER IS
v_result NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_result
FROM service_id_map t
WHERE instr(p_balances, '|' || t.npararam1 || '|') > 0
AND ROWNUM = 1;
RETURN v_result;
END find_option_func;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338223.html
