Помогите с использованием Dynamic PL / SQL, исключение функции - PullRequest
0 голосов
/ 09 июня 2011

Я довольно новичок в PL / SQL (особенно с использованием Dynamic SQL), я создал эту функцию, и она запускается / компилируется без каких-либо ошибок или предупреждений, но когда я запускаю функцию ....

SELECT schema.fa_awd_for_term('0000000','2003SPRING',NULL,NULL)
FROM DUAL;

.... Выдает исключение

1 Ответ

1 голос
/ 09 июня 2011

Удалите обработчики ИСКЛЮЧЕНИЯ, и вы узнаете, в чем на самом деле ошибка.Вы не должны явно обрабатывать непредвиденные исключения.

Было бы также лучше использовать переменные связывания, например, измените это:

    || 'substr(ta_xxxx_id,1,7) = ''sssssss'' '
    || 'and substr(ta_xxxx_id,instr(ta_xxxx_id,''*'',1,2)+1) = ''aaaa'' '

на

    || 'substr(ta_xxxx_id,1,7) = :sssssss '
    || 'and substr(ta_xxxx_id,instr(ta_xxxx_id,''*'',1,2)+1) = :aaaa '

, затем добавьте USINGпредложение оператора OPEN:

OPEN CUR_faawards FOR thequery USING id, v_year;

и удалите код REPLACE для них.Боюсь, вы застряли с «хххх» из-за ужасного дизайна таблицы - колонки на каждый год?!?!

...