Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
Перестал работать курсор. Причем сам селект значение возвращает :(.
Костыли типа rownum = 1 или вместо min(gl.gl_date) min(to_date(gl.gl_date)) тоже помогают.
Интересно в чем проблема.

declare

cursor get_first_payment
is
select min(gl.gl_date) gl_date
from gl
where gl.account_id = 13639634
and gl.base_amount < 0;

p_date gl.gl_date%type;


begin

open get_first_payment;
fetch get_first_payment into p_date;
dbms_output.put_line('Дата' || p_date);
close get_first_payment;

end;
30 авг 10, 17:27    [9351443]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
odv731,

обшибка какая?
30 авг 10, 17:45    [9351624]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6692
odv731,

0. desc gl
1. какая ошибка?
2. какие NLS были до перехода и какие стоят сейчас?
30 авг 10, 17:50    [9351669]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
comphead
odv731,

обшибка какая?


Нет ошибки возвращает null.
30 авг 10, 17:50    [9351671]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
odv731,

а как вы судите что он ничего не вернул?
dbms_output.put_line(get_first_payment%rowcount);
30 авг 10, 17:53    [9351704]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
comphead
odv731,

а как вы судите что он ничего не вернул?
dbms_output.put_line(get_first_payment%rowcount);


1 - возвращает.
30 авг 10, 17:55    [9351719]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
odv731,

p_date gl.gl_date%type

поменяйте

p_date gl.gl_date%rowtype
30 авг 10, 17:56    [9351731]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10039
comphead
поменяйте


???

SY.
30 авг 10, 18:22    [9351929]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
comphead
odv731,

p_date gl.gl_date%type

поменяйте

p_date gl.gl_date%rowtype


Так не будет работать - :).
NLS кстати не менялось.

С клиента кидаю коннет на базу под 10 - гуд. На 11 - трабл.
30 авг 10, 18:25    [9351948]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
SY
comphead
поменяйте


???

SY.


это небольшое отвлечение от основной проблемы.
не знаю как в 11, но в 10 к курсору %type неприменим.
30 авг 10, 18:26    [9351957]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
odv731,

если у вас rowcount возвращает 1 значит курсор не пустой.
может возвращаемая дата нулевая?
30 авг 10, 18:29    [9351969]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
odv731
Костыли типа rownum = 1 или вместо min(gl.gl_date) min(to_date(gl.gl_date)) тоже помогают.
Однако...

Desc долго ждать от вас?
30 авг 10, 18:35    [9352016]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
comphead
к курсору %type неприменим.
Никто и не пытался.
30 авг 10, 18:36    [9352024]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10039
comphead
не знаю как в 11, но в 10 к курсору %type неприменим.


Well, first of all %ROWTYPE against column does not work regardless. And secondly GL is table. Cursor is get_first_payment.

SY.
30 авг 10, 18:36    [9352026]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
SY,

точно.
в конце дня и без форматирования в глазах рябит.
30 авг 10, 18:38    [9352041]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
wildwind
odv731
Костыли типа rownum = 1 или вместо min(gl.gl_date) min(to_date(gl.gl_date)) тоже помогают.
Однако...

Desc долго ждать от вас?


Name Type Nullable Default Comments
---------------- ------------ -------- ------- ----------------------------
ID NUMBER(10)
POST_ID NUMBER(10)
AMOUNT NUMBER(38,2)
BASE_CURRENCY_ID NUMBER(10)
BASE_AMOUNT NUMBER(38,2)
ACCOUNT_ID NUMBER(10)
IS_REGULAR CHAR(1)
GL_DATE DATE
GL_STATUS NUMBER(10)
30 авг 10, 18:43    [9352061]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
get_first_payment%notfound - true.
get_first_payment%rowcount - 1.
Отак.
30 авг 10, 18:46    [9352082]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
mmar
Member

Откуда: -)
Сообщений: 391
odv731,
а gl - это вьюшка или таблица таки?:)
30 авг 10, 18:52    [9352120]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
wildwind
Member

Откуда: Москва
Сообщений: 1296
odv731,

Добавьте в селект count(*), count(gl_date), max(gl_date). Покажите результаты отдельно, и в курсоре (добавьте переменных).

P.S. Приводите пожалуйста выполняемый код полностью и в тегах [src].
30 авг 10, 18:55    [9352127]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
mmar
odv731,
а gl - это вьюшка или таблица таки?:)

Таблица партицированая по GL_DATE.
30 авг 10, 18:56    [9352131]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
wildwind
odv731,

Добавьте в селект count(*), count(gl_date), max(gl_date). Покажите результаты отдельно, и в курсоре (добавьте переменных).

P.S. Приводите пожалуйста выполняемый код полностью и в тегах [src].


declare

cursor get_first_payment
is
select count(*) cnt, count(gl_date) cnl_gl , max(gl_date) gl_date--, gl.account_id
from gl
where gl.account_id = 13639634
and gl.base_amount < 0
/*and rownum = 1*/;

p_date gl.gl_date%type := null;
p_cnt integer;
p_cnt_gl integer;

begin

open get_first_payment;
fetch get_first_payment into p_cnt, p_cnt_gl, p_date;
dbms_output.put_line(p_cnt);
dbms_output.put_line(p_cnt_gl);
dbms_output.put_line(p_date);
close get_first_payment;

end;

работает.

1
1
27.08.08
30 авг 10, 19:04    [9352169]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
odv731,

добавьте плз еще туда
min()

зы. не гнушайтесь тегом SRC
30 авг 10, 19:06    [9352178]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
odv731
Member

Откуда:
Сообщений: 11
comphead
odv731,

добавьте плз еще туда
min()

зы. не гнушайтесь тегом SRC

declare

  cursor get_first_payment
  is
  select count(*) cnt, count(gl_date) cnl_gl , max(gl_date) gl_date, max(gl_date) gl_date_min--, gl.account_id
    from gl
   where gl.account_id = 13639634
     and gl.base_amount < 0
     /*and rownum = 1*/;

  p_date     gl.gl_date%type := null;
  p_date_min gl.gl_date%type := null;
  p_cnt                  integer;
  p_cnt_gl               integer;

begin

  open get_first_payment;
  fetch get_first_payment into p_cnt, p_cnt_gl, p_date, p_date_min;
  dbms_output.put_line(p_cnt);
  dbms_output.put_line(p_cnt_gl);
  dbms_output.put_line(p_date);
  dbms_output.put_line(p_date_min);
  close get_first_payment;

end;

1
1
27.08.08
27.08.08
30 авг 10, 19:10    [9352194]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18336
odv731
comphead
odv731,
обшибка какая?

Нет ошибки возвращает null.


1) вместо
dbms_output.put_line('Дата' || p_date);
попробуйте
dbms_output.put_line('Дата' || to_char(p_date,'yyyymmddhh24miss'));

2) какие индексы есть на табличке gl?
30 авг 10, 19:11    [9352197]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с кодом после перехода на 11G  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
odv731,

вы вставили еще один max. нужно min
30 авг 10, 19:12    [9352202]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить