【发布时间】:2012-01-14 03:58:31
【问题描述】:
正在调试一个包过程,当有实际数据时,我发现没有找到数据。
只测试 SELECT
SELECT trim(trailing '/' from GL_SECURITY) as DUMMY
FROM b2k_user@b2k
WHERE sms_username = 'FUCHSB';
这很高兴返回我的值:'23706*706'
当我尝试选择这个 INTO 时,我得到一个 NO_DATA _FOUND 错误 (注释掉我输入的错误处理)
set serveroutput on
DECLARE
p_BAS_user_name varchar2(20);
v_gl_inclusion varchar2(1000);
v_gl_exclusions varchar2(1000);
BEGIN
--inputs
p_BAS_user_name := 'FUCHSB';
dbms_output.put_line(p_BAS_user_name);
----- GOOD -----
--BEGIN
SELECT trim(trailing '/' from GL_SECURITY) as DUMMY
INTO v_gl_inclusion
FROM b2k_user@b2k
WHERE sms_username = p_BAS_user_name;
--EXCEPTION
-- WHEN NO_DATA_FOUND THEN
-- v_gl_inclusion := 'SUPER EFFING STUPID';
--END;
dbms_output.put_line(v_gl_inclusion);
END;
Error report:
ORA-01403: no data found
ORA-06512: at line 12
01403. 00000 - "no data found"
*Cause:
*Action:
FUCHSB
我可以很好地捕捉到错误,除了基于第一个查询我知道 100% 数据库中有 FUCHSB 的值。
任何想法.. 我真的开始鄙视甲骨文。是的,此查询正在数据链路上运行,如第一个查询所示,数据在那里。
谢谢
解决了 SQL 开发人员的奇怪行为导致我忽略了潜在的空白:
在执行“WHERE sms_username = p_BAS_user_name;”时,运行独立选择时似乎 SQL Developer 应用了自己的修剪比较器部分..事实证明,当它坐在包中时,它没有..一堆空白导致了这个问题..它在正常选择时返回仍然很奇怪。不过还是谢谢!
【问题讨论】:
-
“一堆空白”是 CHAR 数据类型的正常行为 =)
标签: sql oracle plsql oracle10g