Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
Помогите пожалуйста разобраться с очень не понятным глюком
Курсор documents_in_folder иногода равен null что вызывает ошибку.... а иногда нормально...
Заранее благодарен

PROCEDURE get_documents (p_folder_id folders.ID%TYPE, p_language_id IN NUMBER DEFAULT NULL)
IS
--Кусор для вытаскивания всех документов в папке
CURSOR documents_in_folder
IS
SELECT 1 lvl, i.ID,
SUBSTR ( reports.get_doc_vid_name (i.doc_vid_id,
g_language_id
)
|| ' '
|| i.reg_num,
1,
200
) NAME,
i.reg_date reg_date, get_entity_url (1, i.ID) url,
'incoming' doc_type_name
FROM incoming i
WHERE i.folder_id = p_folder_id
UNION ALL
SELECT 2 lvl, i.ID,
SUBSTR ( reports.get_indoc_vid_name (i.indoc_vid_id,
g_language_id
)
|| ' '
|| i.reg_num,
1,
200
) NAME,
i.reg_date reg_date, get_entity_url (7, i.ID) url,
'inner' doc_type_name
FROM INNER i
WHERE i.folder_id = p_folder_id
UNION ALL
SELECT 3 lvl, i.ID,
SUBSTR ( reports.get_vid_name (i.vid_id, g_language_id)
|| ' '
|| i.reg_num,
1,
200
) NAME,
i.reg_date reg_date, get_entity_url (11, i.ID) url,
'incdep' doc_type_name
FROM inc_deps i
WHERE i.folder_id = p_folder_id
UNION ALL
SELECT 4 lvl,o.ID,
SUBSTR
( reports.get_outdoc_vid_name (o.outdoc_vid_id,
g_language_id
)
|| ' '
|| o.reg_num,
1,
200
) NAME,
o.reg_date reg_date, get_entity_url (6, o.ID) url,
'outgoing' doc_type_name
FROM outgoing o
WHERE o.folder_id = p_folder_id
UNION ALL
SELECT 5 lvl, m.id,
SUBSTR (DECODE(p_language_id,1,m.theme_rus
,2,m.theme_uzb
,3,m.theme_lat
,m.Theme_Rus),
1,
200
) NAME,
m.create_date reg_date,
get_entity_url (12, m.ID) url,
'meeting' doc_type_name
FROM meetings m
WHERE m.folder_id = p_folder_id
ORDER BY lvl, reg_date;
BEGIN
4 июл 08, 11:57    [5886159]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
lans
Помогите пожалуйста разобраться с очень не понятным глюком
Курсор documents_in_folder иногода равен null что вызывает ошибку.... а иногда нормально...
Заранее благодарен
   PROCEDURE get_documents (p_folder_id folders.ID%TYPE, p_language_id IN NUMBER DEFAULT NULL)
   IS
      --Кусор для вытаскивания всех документов в папке
      CURSOR documents_in_folder
      IS
         SELECT   1 lvl, i.ID,
                  SUBSTR (   reports.get_doc_vid_name (i.doc_vid_id,
                                                       g_language_id
                                                      )
                          || ' '
                          || i.reg_num,
                          1,
                          200
                         ) NAME,
                  i.reg_date reg_date, get_entity_url (1, i.ID) url,
                  'incoming' doc_type_name
             FROM incoming i
            WHERE i.folder_id = p_folder_id
         UNION ALL
         SELECT   2 lvl, i.ID,
                  SUBSTR (   reports.get_indoc_vid_name (i.indoc_vid_id,
                                                         g_language_id
                                                        )
                          || ' '
                          || i.reg_num,
                          1,
                          200
                         ) NAME,
                  i.reg_date reg_date, get_entity_url (7, i.ID) url,
                  'inner' doc_type_name
             FROM INNER i
            WHERE i.folder_id = p_folder_id
         UNION ALL
         SELECT   3 lvl, i.ID,
                  SUBSTR (   reports.get_vid_name (i.vid_id, g_language_id)
                          || ' '
                          || i.reg_num,
                          1,
                          200
                         ) NAME,
                  i.reg_date reg_date, get_entity_url (11, i.ID) url,
                  'incdep' doc_type_name
             FROM inc_deps i
            WHERE i.folder_id = p_folder_id
         UNION ALL
         SELECT   4 lvl,o.ID,
                  SUBSTR
                       (   reports.get_outdoc_vid_name (o.outdoc_vid_id,
                                                        g_language_id
                                                       )
                        || ' '
                        || o.reg_num,
                        1,
                        200
                       ) NAME,
                  o.reg_date reg_date, get_entity_url (6, o.ID) url,
                  'outgoing' doc_type_name
             FROM outgoing o
            WHERE o.folder_id = p_folder_id
         UNION ALL
         SELECT   5 lvl, m.id,
                  SUBSTR (DECODE(p_language_id,1,m.theme_rus
                                              ,2,m.theme_uzb
                                              ,3,m.theme_lat
                                                ,m.Theme_Rus),
                          1,
                          200
                         ) NAME,
                  m.create_date reg_date,
                  get_entity_url (12, m.ID) url,
                  'meeting' doc_type_name
             FROM meetings m
            WHERE m.folder_id = p_folder_id
         ORDER BY lvl, reg_date;
   BEGIN

При оформлении кода используйте, пожалуйста, тег SRC данного форума.
Этим вы повысите свои шансы на получение ответа.
4 июл 08, 12:01    [5886181]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
lans
Помогите пожалуйста разобраться с очень не понятным глюком
Курсор documents_in_folder иногода равен null что вызывает ошибку.... а иногда нормально...
Заранее благодарен

  PROCEDURE get_documents (p_folder_id folders.ID%TYPE, p_language_id IN NUMBER DEFAULT NULL)
   IS
      --Кусор для вытаскивания всех документов в папке
      CURSOR documents_in_folder
      IS
         SELECT   1 lvl, i.ID,
                  SUBSTR (   reports.get_doc_vid_name (i.doc_vid_id,
                                                       g_language_id
                                                      )
                          || ' '
                          || i.reg_num,
                          1,
                          200
                         ) NAME,
                  i.reg_date reg_date, get_entity_url (1, i.ID) url,
                  'incoming' doc_type_name
             FROM incoming i
            WHERE i.folder_id = p_folder_id
         UNION ALL
         SELECT   2 lvl, i.ID,
                  SUBSTR (   reports.get_indoc_vid_name (i.indoc_vid_id,
                                                         g_language_id
                                                        )
                          || ' '
                          || i.reg_num,
                          1,
                          200
                         ) NAME,
                  i.reg_date reg_date, get_entity_url (7, i.ID) url,
                  'inner' doc_type_name
             FROM INNER i
            WHERE i.folder_id = p_folder_id
         UNION ALL
         SELECT   3 lvl, i.ID,
                  SUBSTR (   reports.get_vid_name (i.vid_id, g_language_id)
                          || ' '
                          || i.reg_num,
                          1,
                          200
                         ) NAME,
                  i.reg_date reg_date, get_entity_url (11, i.ID) url,
                  'incdep' doc_type_name
             FROM inc_deps i
            WHERE i.folder_id = p_folder_id
         UNION ALL
         SELECT   4 lvl,o.ID,
                  SUBSTR
                       (   reports.get_outdoc_vid_name (o.outdoc_vid_id,
                                                        g_language_id
                                                       )
                        || ' '
                        || o.reg_num,
                        1,
                        200
                       ) NAME,
                  o.reg_date reg_date, get_entity_url (6, o.ID) url,
                  'outgoing' doc_type_name
             FROM outgoing o
            WHERE o.folder_id = p_folder_id
         UNION ALL
         SELECT   5 lvl, m.id,
                  SUBSTR (DECODE(p_language_id,1,m.theme_rus
                                              ,2,m.theme_uzb
                                              ,3,m.theme_lat
                                                ,m.Theme_Rus),
                          1,
                          200
                         ) NAME,
                  m.create_date reg_date,
                  get_entity_url (12, m.ID) url,
                  'meeting' doc_type_name
             FROM meetings m
            WHERE m.folder_id = p_folder_id
         ORDER BY lvl, reg_date;
   BEGIN


А чего бы не использовать вот такое
exit when documents_in_folder%NOTFOUND;
?
4 июл 08, 12:05    [5886229]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
ну так проблема та останиться... втом плане что ошибки просто не будет... а курсор так же будер равен null...(
4 июл 08, 12:18    [5886302]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
lans
ну так проблема та останиться... втом плане что ошибки просто не будет... а курсор так же будер равен null...(
Ну тогда используйте NVL в нужных местах.
4 июл 08, 12:22    [5886319]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Евгений_25
Member

Откуда: Харьков
Сообщений: 460
Что с одними и теме же значениями курсор is null или таки с разными?
4 июл 08, 12:22    [5886323]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
Так в том то и дело что с одними и теми же данными...
4 июл 08, 12:25    [5886338]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
lans
Так в том то и дело что с одними и теми же данными...

Вы неверно изначально вопрос сформулировали. Получается Вам не от вылета программы по ошибке надо избавится, а разобраться почему в одном случае селект(курсор) видит данные, а иногда нет при одинаковых условиях.
Пробуйте погонять отдельно Ваш селект. Возможно что-нибудь с правами на чтение.
4 июл 08, 12:34    [5886399]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Евгений_25
Member

Откуда: Харьков
Сообщений: 460
Oleg M.Ivanov
lans
Так в том то и дело что с одними и теми же данными...

Вы неверно изначально вопрос сформулировали. Получается Вам не от вылета программы по ошибке надо избавится, а разобраться почему в одном случае селект(курсор) видит данные, а иногда нет при одинаковых условиях.
Пробуйте погонять отдельно Ваш селект. Возможно что-нибудь с правами на чтение.


+1
4 июл 08, 12:39    [5886422]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
Oleg M.Ivanov
lans
Так в том то и дело что с одними и теми же данными...

Вы неверно изначально вопрос сформулировали. Получается Вам не от вылета программы по ошибке надо избавится, а разобраться почему в одном случае селект(курсор) видит данные, а иногда нет при одинаковых условиях.
Пробуйте погонять отдельно Ваш селект. Возможно что-нибудь с правами на чтение.

Вернее может кривые символы в названиях встречаются.
4 июл 08, 12:41    [5886432]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
Сам запрос прогоняется отлично....
4 июл 08, 12:56    [5886532]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
В каком смысле кривые...
4 июл 08, 13:00    [5886563]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
Символы обычная латиница
4 июл 08, 13:10    [5886634]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
lans
В каком смысле кривые...

Ну типа кавычки, апострофы... много всяких.
Вам нужно убедиться, что параметр передается верно. Так?
Если в дебуге отловить не удается, то сделайте какую-нибудь вспомогательную табличку и пишите туда передаваемые параметры. А потом при ошибке смотрите, что там в действительности передавалось. Только исключения обработайте правильно.
4 июл 08, 13:10    [5886636]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
lans
Member

Откуда:
Сообщений: 1118
Возможность пройтись в дебаге есть.... Там передаёться всего один параметр... и сам запрос работает...
4 июл 08, 13:32    [5886847]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
Oleg M.Ivanov
Member

Откуда: Москва
Сообщений: 1164
lans
Возможность пройтись в дебаге есть.... Там передаёться всего один параметр... и сам запрос работает...

В чудеса не верю. Все они выявляются дебагом или логом.
4 июл 08, 13:35    [5886864]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
stax..
Guest
lans
Помогите пожалуйста разобраться с очень не понятным глюком
Курсор documents_in_folder иногода равен null что вызывает ошибку.... а иногда нормально...
Заранее благодарен

"иногода равен null" не возвращает записей?
или некоторые поля is null?
что после бегин (как курсор используете)?
......
stax
4 июл 08, 17:14    [5888894]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
ALocky
Member

Откуда: Понаехал из Подмосковья
Сообщений: 747
stax..

"иногода равен null" не возвращает записей?
или некоторые поля is null?
что после бегин (как курсор используете)?
......
stax

Ставлю на примерно следующее:

begin
  if ... then
     open documents_in_folder;
  elsif ... then
     open documents_in_folder;
  end if;
end;
4 июл 08, 17:22    [5888960]     Ответить | Цитировать Сообщить модератору
 Re: Cursor is null  [new]
stax..
Guest
ALocky
stax..

"иногода равен null" не возвращает записей?
или некоторые поля is null?
что после бегин (как курсор используете)?
......
stax

Ставлю на примерно следующее:

begin
  if ... then
     open documents_in_folder;
  elsif ... then
     open documents_in_folder;
  end if;
end;

ни наю
важно как фетчат
мож лишний фетч затесался
......
stax
4 июл 08, 17:48    [5889175]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить