【发布时间】:2021-12-11 01:31:05
【问题描述】:
我有一个类似的 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;
【问题讨论】: