【发布时间】:2015-08-03 10:19:54
【问题描述】:
我正在尝试创建一个简单的函数,它接受 3 个参数、2 个数字和一个字符串。我已经编写了函数,但是在对字符串使用 LIKE 比较时,没有从简单的 select 语句中得到预期的结果。
当字符串输入值设置为 ebts 时,下面函数中的选择不会返回任何行,但如果我将其作为独立选择状态运行,它会返回 2 行,这是我所期望的。已使用 dbms 输出确定是否传递了空格,但看起来一切正常。
CREATE OR REPLACE FUNCTION OPC_OP.sitezone_exists
(in_site_id IN NUMBER, in_zone_id IN NUMBER, in_mod VARCHAR2)
RETURN NUMBER
IS
v_count_rec NUMBER;
v_return NUMBER;
v_mod VARCHAR2(4) := in_mod;
BEGIN
SELECT COUNT(*)
INTO v_count_rec
FROM AW_ACTIVE_ALARMS
WHERE AW_ACTIVE_ALARMS.site_id = in_site_id
AND AW_ACTIVE_ALARMS.zone_id = in_zone_id
AND AW_ACTIVE_ALARMS.module LIKE 'v_mod%';
IF v_count_rec > 0
THEN
DBMS_OUTPUT.PUT_LINE('count'||v_count_rec||'=========='||v_mod||'=============');
v_return:= 1;
RETURN (v_return);
ELSE
DBMS_OUTPUT.PUT_LINE('count'||v_count_rec||'=========='||v_mod||'=============');
v_return:= 0;
RETURN (v_return);
END IF;
END sitezone_exists;
当传入值 12、12 时,ebts 显示的输出是:
计数 0 ==========ebts============= RetVal = 0
如果我运行相同的选择替换,只传入上述值,则查询返回 2 行 - 我删除了函数的 like 子句,然后它返回 2 行,知道为什么子句的 like 部分无法匹配有行。
【问题讨论】: