ORACLE: NO DATA FOUND - but data exists

Отладка пакетной процедуры и получение сообщения о том, что данные не найдены, хотя на самом деле они есть.

Тестирую только 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

Я могу поймать ошибку просто отлично, за исключением того факта, что на основе 1-го запроса я знаю на 100%, что в базе данных есть значение для FUCHSB.

Любые идеи... Я действительно начинаю презирать Oracle. Да, этот запрос выполняется по даталинку, как видно из первого запроса, данные там есть.

Спасибо


Решено Странное поведение SQL developer заставило меня пропустить потенциальный пробел:

Похоже, что SQL Developer при выполнении отдельного select применяет свой собственный компаратор обрезки при выполнении порции 'WHERE sms_username = p_BAS_user_name;'... оказывается, когда он сидит в пакете, он этого не делает... куча пробелов была причиной проблемы... все еще странно, что он возвращается при обычном select. Но все равно спасибо!

6
задан Brennan Fuchs 6 December 2011 в 15:09
поделиться