加入收藏 | 设为首页 | 会员中心 | 我要投稿 甘南站长网 (https://www.0941zz.com/)- 科技、行业物联网、开发、云计算、云管理!
当前位置: 首页 > 数据库 > MsSql > 正文

sql C ORACLE:找不到数据 C 但数据存在

发布时间:2023-12-15 00:41:11 所属栏目:MsSql 来源:DaWei
导读: 调试包过程并在实际存在数据时找到无数据.

只测试SELECT

SELECT trim(trailing '/' from GL_SECURITY) as DUMMY
FROM b2k_user@b2k
WHERE sms_username = 'FUCHSB';
这愉快地回

调试包过程并在实际存在数据时找到无数据.

只测试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类型而不是VARCHAR2.

考虑以下:

SQL> CREATE TABLE t (a CHAR(10)); Table created. SQL> INSERT INTO t VALUES ('FUCHSB'); 1 row created. SQL> SELECT * FROM t WHERE a = 'FUCHSB'; A ---------- FUCHSB SQL> DECLARE 2 l VARCHAR2(20) := 'FUCHSB'; 3 BEGIN 4 SELECT a INTO l FROM t WHERE a = l; 5 END; 6 / DECLARE * ERROR at line 1: ORA-01403: no data found ORA-06512: at line 4

结论:

>使用CHAR数据类型时,将PL / SQL变量声明为CHAR.>如果可能,请优先使用VARCHAR2数据类型进行表列定义. CHAR数据类型只是一个膨胀的VARCHAR2数据类型,并且不会在VARCHAR2数据类型上添加任何功能(消耗更多空间/内存不是一项功能).

(编辑:甘南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章