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

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

Код: 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
Ошибка ORA-22905
    #36983769
denis.borisevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
natnim,

select test(2) from dual;
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #36983776
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Ошибка ORA-22905
    #36983777
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natnimПри вызове функции
Код: plaintext
 select * from table(test( 2 )) 
происходит ошибка ORA-22905.

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

Вот еще пример:
Код: 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
Ошибка ORA-22905
    #36983928
ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ы
Гость
natnim,

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

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

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

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

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

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

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

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
Ошибка ORA-22905
    #39908534
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--
девушку
Для подтверждения своей девушкости приведи полный скрипт или, хотя бы, определение типа table_of_dates.
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #39908543
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

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

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

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

table(cast(l_dates as table_of_date))
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #39908551
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--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
Ошибка ORA-22905
    #39908608
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
В любом случае не воспроизводится:

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

..

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


гробокопателю надо быть готовому к событию (например) пока вы медлили с ответом,
эта девушка уже стала бабушкой
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #39908620
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Ошибка ORA-22905
    #39908659
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
В любом случае не воспроизводится
Чтобы было, что воспроизводить, нужно знать тип переменной. Однако автор предпочел ответу помидоры.
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #39908702
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Чтобы было, что воспроизводить, нужно знать тип переменной. Однако автор предпочел ответу помидоры.


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

SY.
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #39908794
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY
-2-
Чтобы было, что воспроизводить, нужно знать тип переменной. Однако автор предпочел ответу помидоры.
хотя l_dates определена как l_dates table_of_dates
Не понимаю, для чего ты повторяешь его слова. По имени пользовательского типа угадать вариант, который приведет к ORA-22905?
...
Рейтинг: 0 / 0
Ошибка ORA-22905
    #39908802
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-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
Ошибка ORA-22905
    #39908849
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY

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

очепятка

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


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

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


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