Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка ORA-22905 / 25 сообщений из 25, страница 1 из 1
29.11.2010, 15:54
    #36983753
natnim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
Здравствуйте.
Подскажите, пожалуйста, в чем может быть дело.

Выполняю вот такую функцию:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 create or replace function test(param in integer) return integer 
is
  Result integer; --возвращаемое значение
  
begin
  Result := param +  1 ;
  dbms_output.put_line(Result);
  return(Result);
end test; 

При вызове функции
Код: plaintext
 select * from table(test( 2 )) 
происходит ошибка ORA-22905.

Спасибо.
...
Рейтинг: 0 / 0
29.11.2010, 15:57
    #36983769
denis.borisevich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
natnim,

select test(2) from dual;
...
Рейтинг: 0 / 0
29.11.2010, 15:58
    #36983776
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
natnim,

http://ora-22905.ora-code.com/ attempt to access rows of an item whose type is not known at parse time or that is not of a nested table type
TABLE()
Код: plaintext
select test( 2 ) from dual 
...
Рейтинг: 0 / 0
29.11.2010, 15:58
    #36983777
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
natnimПри вызове функции
Код: plaintext
 select * from table(test( 2 )) 
происходит ошибка ORA-22905.

Ты сообщение об ошибке читал?
...
Рейтинг: 0 / 0
29.11.2010, 16:39
    #36983925
natnim
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
Да, что за ошибка читала.
Только не пойму, почему у меня появилась.

Вот еще пример:
Код: plaintext
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.
 
create or replace function test(tarif in integer) return integer 
is
  cursor cur is
         select sum(cmi.val) as s from cmi
         where cmi.tariffid =tarif; 
          
  Result integer; --возвращаемое значение

begin
  
  open cur;
  fetch cur into Result;
  if cur%notfound
  then
     close cur;
     return null;
  else
     close cur;
     dbms_output.put_line(Result);
     return(Result);
  end if;


end test;

Ну что может быть не так?
Проблема с передачей параметров?
...
Рейтинг: 0 / 0
29.11.2010, 16:40
    #36983928
ы
ы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
natnim,

Судя по всему, у тебя ошибка в ДНК
...
Рейтинг: 0 / 0
29.11.2010, 16:56
    #36984003
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
intimaДа, что за ошибка читала.Мы читали, мы читали,
Аж протерли все штаны.
Уже буквы плакать стали,
Но ошибку не нашли...
...
Рейтинг: 0 / 0
29.11.2010, 17:44
    #36984208
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
natnimДа, что за ошибка читала.
Только не пойму, почему у меня появилась.

Потому что 1 число (для самого первого примера - 3) очень тяжело переделать в таблицу.

Поэтому, делают иначе.

Либо переносят вызов функции между select и from запроса к другой таблице (например dual) и получают результат для каждой строки этой таблицы.

Либо описывают функцию возвращающую табличный тип , например построчно (pipelined).

Ну либо еще как то.
...
Рейтинг: 0 / 0
10.12.2010, 11:19
    #37006484
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
Сергей АрсеньевПотому что 1 число (для самого первого примера - 3) очень тяжело переделать в таблицу.Ну если девушка просит...
Код: plaintext
select * from table(sys.odcinumberlist(test( 2 )))
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
26.12.2019, 15:58
    #39908522
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
Товарищи, а вы напрасно на девушку накинулись.

Вот есть у меня тип:

create or replace type table_of_date as table of date
/

- вроде бы nested table
но когда запускаю процедуру, в которой есть INSERT SELECT с такими кусками

WHERE id in (select column_value from table(l_dates))

вылезает ORA-22905

хотя l_dates определена как
l_dates table_of_dates;

ничего не понимаю
...
Рейтинг: 0 / 0
26.12.2019, 16:15
    #39908534
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
--Eugene--
девушку
Для подтверждения своей девушкости приведи полный скрипт или, хотя бы, определение типа table_of_dates.
...
Рейтинг: 0 / 0
26.12.2019, 16:24
    #39908543
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
-2-,

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

закастовал table(cast(l_dates as table_of_dates)) - заработало

не знаю, в чем причина
Oracle 12.2
...
Рейтинг: 0 / 0
26.12.2019, 16:26
    #39908546
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
опечатка

table(cast(l_dates as table_of_date))
...
Рейтинг: 0 / 0
26.12.2019, 16:41
    #39908551
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
--Eugene--

WHERE id in (select column_value from table(l_dates))


Странное имя поля ID с типом данных DATE. В любом случае не воспроизводится:

Код: 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.
SQL> select  banner
  2    from  v$version
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
CORE    12.2.0.1.0      Production
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

SQL> declare
  2      v_table_of_date table_of_date;
  3  begin
  4      select  hiredate
  5        bulk  collect
  6        into  v_table_of_date
  7        from  emp;
  8      insert
  9        into emp1
 10        select  *
 11          from  emp
 12          where hiredate in (
 13                             select  column_value
 14                               from  table(v_table_of_date)
 15                            );
 16  end;
 17  /

PL/SQL procedure successfully completed.

SQL> 



SY.
...
Рейтинг: 0 / 0
26.12.2019, 17:59
    #39908608
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
SY
В любом случае не воспроизводится:

Ну тут от версии многое зависит.
Где-то надо кастовать принудительно, где-то можно даже table() не выпечатывать...
Тут на 19с типовая пакетная pipelined определенная через курсорный тип в пакете вдруг выдала ATTR_1...ATTR_N вместо нормальных идентификаторов.
Одна из нескольких.
После перекомпиляции нормализовалось.
Потом опять слетело.
Пришлось вот прям пару create type оформить, чтобы не бузила.
...
Рейтинг: 0 / 0
26.12.2019, 18:14
    #39908615
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
--Eugene--
Товарищи, а вы напрасно на девушку накинулись.

..

ничего не понимаю


гробокопателю надо быть готовому к событию (например) пока вы медлили с ответом,
эта девушка уже стала бабушкой
...
Рейтинг: 0 / 0
26.12.2019, 18:21
    #39908620
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
andrey_anonymous

Ну тут от версии многое зависит.


Ну так я и проверил на 12.2.0.1.0. А что там у TC после 12.2 x.з. Полную версию он не привел. Ну а что до CAST AS UDT то идиотские косяки там с незапамятных времен:

Код: 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.
SQL> desc NumList
 NumList TABLE OF NUMBER

SQL> desc emp
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 EMPNO                                     NOT NULL NUMBER(4)
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 MGR                                                NUMBER(4)
 HIREDATE                                           DATE
 SAL                                                NUMBER(7,2)
 COMM                                               NUMBER(7,2)
 DEPTNO                                             NUMBER(2)

SQL> select cast(collect(sal) as NumList) from emp;
select cast(collect(sal) as NumList) from emp
            *
ERROR at line 1:
ORA-22814: attribute or element value is larger than specified in type


SQL> select cast(collect(cast(sal as number)) as NumList) from emp;

CAST(COLLECT(CAST(SALASNUMBER))ASNUMLIST)
--------------------------------------------------------------------------------
NUMLIST(800, 1600, 1250, 2975, 1250, 2850, 2450, 3000, 5000, 1500, 1100, 950, 30
00, 1300)


SQL>  



SY.
...
Рейтинг: 0 / 0
26.12.2019, 19:03
    #39908659
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
SY
В любом случае не воспроизводится
Чтобы было, что воспроизводить, нужно знать тип переменной. Однако автор предпочел ответу помидоры.
...
Рейтинг: 0 / 0
26.12.2019, 20:05
    #39908702
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
-2-
Чтобы было, что воспроизводить, нужно знать тип переменной. Однако автор предпочел ответу помидоры.


TC: хотя l_dates определена как l_dates table_of_dates; и create or replace type table_of_date as table of date

SY.
...
Рейтинг: 0 / 0
27.12.2019, 01:34
    #39908794
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
SY
-2-
Чтобы было, что воспроизводить, нужно знать тип переменной. Однако автор предпочел ответу помидоры.
хотя l_dates определена как l_dates table_of_dates
Не понимаю, для чего ты повторяешь его слова. По имени пользовательского типа угадать вариант, который приведет к ORA-22905?
...
Рейтинг: 0 / 0
27.12.2019, 04:05
    #39908802
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
-2-
По имени пользовательского типа угадать вариант, который приведет к ORA-22905?


Только сейчас заметил нестыковку:

--Eugene--


Вот есть у меня тип:

create or replace type table_of_ date as table of date
/
хотя l_dates определена как
l_dates table_of_ dates ;


SY.
...
Рейтинг: 0 / 0
27.12.2019, 10:17
    #39908849
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
SY

Только сейчас заметил нестыковку:

очепятка

.....
stax
...
Рейтинг: 0 / 0
27.12.2019, 13:38
    #39908983
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
Stax
очепятка
ну хоть один спустился на землю.
от души
...
Рейтинг: 0 / 0
27.12.2019, 14:51
    #39909071
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
--Eugene--
ну хоть один спустился на землю.
от души
Перебухал?
...
Рейтинг: 0 / 0
27.12.2019, 14:58
    #39909084
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка ORA-22905
--Eugene--
ну хоть один спустился на землю.


Ну а ты все витаешь - ни полной версии (с патчами) ни четкого примера показывающего проблему.

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


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