Подавить ORA-01403: данные не найдены, за исключением - PullRequest
0 голосов
/ 30 августа 2011

У меня есть следующий код

SELECT SUM(nvl(book_value,
                   0))
    INTO v_balance
    FROM account_details
    WHERE currency = 'UGX';

--Write the balance away

SELECT SUM(nvl(book_value,
                   0))
    INTO v_balance
    FROM account_details
    WHERE currency = 'USD';

--Write the balance away

Теперь проблема в том, что в таблице могут отсутствовать данные для этой конкретной валюты, но могут быть данные для валюты 'USD'.Поэтому в основном я хочу выбрать сумму в моей переменной, и если нет данных, я хочу, чтобы мой сохраненный процесс продолжался и не выдавал исключение 01403.

Я не хочу помещать каждый выбор в операторБлок BEGIN EXCEPTION END либо есть, так как я могу подавить исключение и просто оставить переменную v_balance в неопределенном (NULL) состоянии без необходимости в блоках исключений?

Ответы [ 2 ]

2 голосов
/ 30 августа 2011
select nvl(balance,0) 
into v_balance
from 
(
    select sum(nvl(book_value,0)) as balance
    from account_details
    where currency = 'UGX'
);
0 голосов
/ 28 ноября 2014
SELECT L1.PKCODE L1CD,  L1.NAME L1N, L1.LVL L1LVL,
          L2.PKCODE L2CD, L2.NAME L2N,  L2.LVL L2LVL,
          L5.PKCODE L5CD, L5.NAME L5N,

INFOTBLM.OPBAL (  L5.PKCODE, :PSTDT, :PSTUC, :PENUC, :PSTVT, :PENVT ) OPBAL,
INFOTBLM.DEBIT    ( L5.PKCODE, :PSTDT,:PENDT, :PSTUC, :PENUC, :PSTVT, :PENVT ) AMNTDR,
INFOTBLM.CREDIT ( L5.PKCODE, :PSTDT,:PENDT, :PSTUC, :PENUC, :PSTVT, :PENVT ) AMNTCR

FROM   FSLVL  L1, FSLVL L2,  FSMAST L5

WHERE  L2.FKCODE  =  L1.PKCODE
AND        L5.FKCODE  =  L2.PKCODE

AND        L5.PKCODE Between :PSTCD AND NVL(:PENCD,:PSTCD)

GROUP BY  L1.PKCODE ,  L1.NAME , L1.LVL ,
                 L2.PKCODE , L2.NAME ,  L2.LVL ,
                 L5.PKCODE , L5.NAME 

ORDER BY L1.PKCODE, L2.PKCODE,  L5.PKCODE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...