powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка ORA-01722 при открытии курсора
14 сообщений из 14, страница 1 из 1
Ошибка ORA-01722 при открытии курсора
    #40088530
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Возникла такая неприятность. Есть процедура, в ней объявлены переменные
Код: plsql
1.
2.
3.
    LCur      sys_refcursor;
    LRec      mop_z_%rowtype;
    LSql      varchar2(4000);


В самом теле процедуры формируется динамический запрос и открывается по нему курсор
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    for b in (select * from banks) loop
        LSql := 'select * from mop_z_ t
 where <мои условия отбора>';
        open LCur for LSql;
        loop
          fetch LCur
            into LRec;
          exit when LCur%notfound;
          --обработка полученных данных, если они есть
        end loop;
        close LCur;
      end loop;


При прогоне в PL\SQL Developer ошибок нет, а вот когда вызываю уже из сторонней программы (написана на Delphi в Embarcadero Berlin) то сыпется ошибка ORA-01722: invalid number на строке
Код: plsql
1.
2.
fetch LCur
  into LRec;


Раньше такого не было, ошибка вылезла буквально на днях
В чем может быть проблема? Может в курсоре все поля varchar2 из-за динамического запроса?

База Oracle 18c версия 18.0.0.0.0
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088532
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий
Код: plsql
1.
 where <мои условия отбора>

Нужно проверять, что формируется здесь при вызове из Delphi-клиента.
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088534
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,
формируется все правильно. Были бы ошибки запроса, отбило бы с другой ошибкой и на этапе открытия курсора
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088539
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий
AmKad,
формируется все правильно. Были бы ошибки запроса, отбило бы с другой ошибкой и на этапе открытия курсора

Леонов Юрий
Код: plsql
1.
ошибка ORA-01722: invalid number

Это ошибка времени выполнения, а не этапа парса/компиляции.
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088544
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

Магия данных
NLS_BOMB?
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088548
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad
Код: plsql
1.
ошибка ORA-01722: invalid number

Это ошибка времени выполнения, а не этапа парса/компиляции.

в любом случае данные проверены
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088551
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Lejnin
Леонов Юрий,

Магия данных
NLS_BOMB?


Не совсем понял причем тут это
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088554
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий
Были бы ошибки запроса, отбило бы с другой ошибкой и на этапе открытия курсора
Наивный.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare
  r dual%rowtype;
  c sys_refcursor;
begin
  open c for 'select * from dual where dummy = 1';
  dbms_output.put_line('OPENED');
  fetch c into r;
  close c;
end;
/
OPENED                      
declare                     
*                           
ERROR at line 1:            
ORA-01722: invalid number   
ORA-06512: at line 7        
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088555
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic, почему тогда при тех же значениях параметров в PL\SQL отрабатывает правильно, а при вызове из проги бьет ошибку? Одни и те же данные...
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088556
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic, тем более вы взяли псевдотаблицу, у меня же реальная
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088558
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий
Elic, почему тогда при тех же значениях параметров в PL\SQL отрабатывает правильно, а при вызове из проги бьет ошибку? Одни и те же данные...
А планы могут быть разными…
Проблема в запросе. В запросе есть сравнение строкового столбца с числом или наоборот?
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088559
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий
Elic, тем более вы взяли псевдотаблицу, у меня же реальная
Ты ни черта не понял.
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088560
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леонов Юрий,

проверте нет ли во <мои условия отбора> неявного переобразования типов

нап
x varchar2(10), а во where x<10

если пребразования есть, обратите внимение на NLS_NUMERIC_CHARACTERS

(NLS_NUMERIC_CHARACTERS='.,' или наоборот NLS_NUMERIC_CHARACTERS=',.')
напр в PL\SQL и дельфи могут отличатся

ps
mop_z_ таблица или вьюшка?

.....
stax
...
Рейтинг: 0 / 0
Ошибка ORA-01722 при открытии курсора
    #40088565
Леонов Юрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic

Проблема в запросе. В запросе есть сравнение строкового столбца с числом или наоборот?


В точку! Действительно в условиях WHERE строковое поле сравниваю с числом. Изменил и заработало. Огромное спасибо, не учел этот момент
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка ORA-01722 при открытии курсора
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]