powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замучился с sys_refcursor ом
25 сообщений из 25, страница 1 из 1
Замучился с sys_refcursor ом
    #39324801
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер.
Процедура возвращает ошибку:

ora-00604 error occurred at recursive sql level 1
ora-01003 no statement parsed

сама процедура
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
procedure load_products_list
(
  i_seller_id in number,
  i_seller_status in number,
  i_product_status in number,
  i_product_search_key in varchar2,
  i_between_start in number,
  i_between_end in number,
  o_result out sys_refcursor
)
is
  v_query varchar2(4000); 
begin

  v_query := 'select * from ( select t.id, t.seller, t.category, t.country,  t.shortname, t.description, t.price, t.quantity, t.quantity_real, t.model, t.brand, t.date_create, t.status, t.weight,  row_number() over (order by t.id) rn from  allstore.product t, allstore.seller s  where t.seller = s.id ';
  
  if i_seller_id is not null then 
    v_query :=  v_query || ' and t.seller = '||i_seller_id;
  end if;
  
  if i_seller_status is not null then
    v_query :=  v_query || ' and s.status = '||i_seller_status;
  end if;
  
  if i_product_status is not null then
    v_query :=  v_query || ' and t.status = '||i_product_status;
  end if;        
  
  if i_product_search_key is not null then
    v_query :=  v_query || ' and (upper(t.shortname) like upper(%'||i_product_status||'%) or upper(t.description) like upper(%'||i_product_status||'%))';
  end if;
  
  v_query :=  v_query || ') where rn between '||i_between_start||' and '||i_between_end||' order by rn;';
  
  open o_result for v_query;
	
exception
  when others then
    logs.write_log('E', sqlcode||' '||sqlerrm);
end load_products_list;



Помогите пожалуйста с решением проблемы.
Заранее благодарен
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324802
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Storeora-01003 no statement parsedнельзя распарсить синтаксически неверный курсор. но даже, если ты допишешь кавычки, нет смысла выполнять логически неверный запрос.
Напиши статику, по крайней мере, следующему разработчику будет проще разбирать это чудо.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324803
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Store,

пользуй bind variables
Код: plsql
1.
open o_result for v_query using x, y, z ...
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324804
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene--,

Пробовал. Та же ошибка
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324807
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Store,

допрежде чем исполнять, имеет смысл вывести и посмотреть запрос
на (хотя бы) синтаксическую корректрость, план
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324808
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, -2- прав
Код: plsql
1.
v_query :=  v_query || ' and (upper(t.shortname) like upper(%'||i_product_status||'%) or upper(t.description) like upper(%'||i_product_status||'%))';
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324810
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,

Пробовал. Работает отлично!
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324813
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
select * from (
        select
          t.id,
          t.seller,
          t.category,
          t.country,
          t.shortname,
          t.description,
          t.price,
          t.quantity,
          t.quantity_real,
          t.model,
          t.brand,
          t.date_create,
          t.status,
          t.weight,
          row_number() over
          (order by t.id) rn
        from 
          allstore.product t, 
          allstore.seller s 
        where 
          t.seller = 8
          and t.seller = s.id and    
          s.status = 1 and
          t.status = 1 and
          ((upper(t.shortname) like upper('%alo%')) or (upper(t.description) like upper('%alo%'))) 
      )
      where rn between 1 and 10
      order by rn
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324814
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
5 минут - полет нормальный
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324816
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Store
Код: plsql
1.
2.
3.
  when others then
    logs.write_log('E', sqlcode||' '||sqlerrm);
end load_products_list;

Чудак, поразмысли, что же вернётся приложению в этом случае. И больше так не делай.
Запяточие - не SQL символ.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324817
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Store,

ты бы перед открытием курсора написал бы
Код: plaintext
logs.write_log('I', v_query);
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324818
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

Это просто процедура для записи эксепшенов
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324819
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Store,

он о том, что надо эскалировать исключение выше, если не оговорено особо.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324820
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All StoreElic,

Это просто процедура для записи эксепшенов

.. v_query := v_query || ') where rn between '||i_between_start||' and '||i_between_end||' order by rn ; ';
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324821
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел причину.
Оказывается в динамическом запросе забыл ; (точку с запятой)

Всем спасибо! Извиняюсь за беспокойство
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324822
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawish,

Опередили :-)
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324823
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All StoreЭто просто процедура для записи эксепшеновТы даже не удосужился посмотреть в этот лог.
Ещё раз: others бездумно глушат только быдлокодеры.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324852
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,
Откуда столько желчи? Я начинающий программист, не хочешь отвечать? Зачем хамить и вести себя как настоящее быдло. Успокойся.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324908
All StoreЯ начинающий программистМожешь не продолжать. Оно либо дано, либо будешь вечно пинаем за тупость. Не догадаться проверить, что выполняешь, это как дергать дверь на себя и не догадаться толкнуть от себя. Сегодня с дверью, завтра с форточкой, послезавтра оставишь люк незакрытым и чей-то бизнес крупно попадет.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324957
All Store
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кончающий программист,
Выпей желчегонного. Может и у тебя пройдет. Хотя думаю нет. Это тебе не дано
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39324970
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All StoreОткуда столько желчи?Твоя болезненная реакция на мудрые советы выдаёт намерение и впредь гнать быдлокод.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39325181
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
All Store,

если потрудитесь поискать кто и где здесь вам хамил, то .. ничего и не найдёте
очевидно, померещилось вам. бывает, но это не повод..

и хватит хамить
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39325185
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

его отрицание - это ведь нормальная реакция "начинающего программиста" на слова "уже давно начавшего".
он ведь так и будет упираться рогом пока ему не разжуешь и в рот не положишь.
зачем усугублять? ведь куда логичнее "понять и простить".

вот почему маленький ребенок плачет, хотя родители его любят? - а потому что у него слишком большой запас реактивности.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39325189
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO, вся процедура от начала и до конца - редкий говнокод и пособие - как делать нельзя.
...
Рейтинг: 0 / 0
Замучился с sys_refcursor ом
    #39325197
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--зачем усугублять? ведь куда логичнее "понять и простить".Я помогаю неглупым стать умнее. А баобабы пусть остаются баобабами ещё тыщу лет.
--Eugene--вот почему маленький ребенок плачет, хотя родители его любят? - а потому что у него слишком большой запас реактивности.Даже в саду воспитатель "любит" ограниченную группу ребят. И им, положа руку на сердце, нет времени и возможностей "любить" всемирное ребячество.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Замучился с sys_refcursor ом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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