|
Как использовать VARRAY в SQL?
|
|||
---|---|---|---|
#18+
Друзья, объясните, что неправильно в этом куске PL/SQL: declare type t is varray(10) of numeric; type refcur is ref cursor; t1 t; c1 refcur; i numeric(38); s varchar2(1024); begin t1 := t(101, 102, 103, 104, 105, 106, 107, 108, 109, 110); for i in 1..10 loop dbms_output.put_line('t1(' || to_char(i) || ') = ' || to_char(t1(i))); end loop; open c1 for select * from table(t1); end; Ошибки: ORA-00600 ORA-06544 ORA-06553 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2002, 13:20 |
|
Как использовать VARRAY в SQL?
|
|||
---|---|---|---|
#18+
а что такое table(t1) в приведенном куске? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.06.2002, 17:12 |
|
Как использовать VARRAY в SQL?
|
|||
---|---|---|---|
#18+
table(t1) - это приведение к табличному типу сборной конструкции, чтобы можно было использовать в SELECT по идее, тоже самое можно делать и с переменными, объявленными как вложенные таблицы, но у меня та же ситуация, и те же ошибки :( Может, кто-нибудь все-таки знает, как с этим бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2002, 16:39 |
|
Как использовать VARRAY в SQL?
|
|||
---|---|---|---|
#18+
Ну что ж, отвечу на собственный вопрос сам: 1. Переменные типа VARRAY нельзя преобразовать в таблицу БД, нужно использовать переменные типа TABLE и тип этот должен быть создан на уровне БД, а не в PL/SQL-блоке. create or replace type t as TABLE OF numeric; 2. Нужно использовать магическую конструкцию: open c1 for select * from table(cast(t1 AS t)); ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2002, 17:08 |
|
|
start [/forum/topic.php?fid=52&msg=32032118&tid=1993261]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 281ms |
total: | 405ms |
0 / 0 |