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

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

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

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

допрежде чем исполнять, имеет смысл вывести и посмотреть запрос
на (хотя бы) синтаксическую корректрость, план
...
Рейтинг: 0 / 0
11.10.2016, 18:36
    #39324808
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замучился с sys_refcursor ом
кстати, -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
11.10.2016, 18:39
    #39324810
All Store
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замучился с sys_refcursor ом
orawish,

Пробовал. Работает отлично!
...
Рейтинг: 0 / 0
11.10.2016, 18:41
    #39324813
All Store
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замучился с sys_refcursor ом
Код: 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
11.10.2016, 18:42
    #39324814
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замучился с sys_refcursor ом
5 минут - полет нормальный
...
Рейтинг: 0 / 0
11.10.2016, 18:45
    #39324816
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Замучился с sys_refcursor ом
All Store
Код: plsql
1.
2.
3.
  when others then
    logs.write_log('E', sqlcode||' '||sqlerrm);
end load_products_list;

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

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

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

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

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

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

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

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

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

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

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

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


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