powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / коллекция в запросе
10 сообщений из 10, страница 1 из 1
коллекция в запросе
    #39521173
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Ткните носом- не могу найти объяснений происходящему...

Код: 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.
34.
35.
36.
37.
38.
drop table smp_tmp;
create table smp_tmp(dat date);
insert into smp_tmp
select add_months(trunc(sysdate,'year'),level-1)from dual connect by level <13;
commit;

declare 
  type am_type is table of varchar2(200) index by varchar2(100);
  v_am am_type ;
begin
v_am('01.01.2017'):='''01.01.2017'' as January';
v_am('01.02.2017'):='''01.02.2017'' as February';
v_am('01.03.2017'):='''01.03.2017'' as March';
v_am('01.04.2017'):='''01.04.2017'' as April';
v_am('01.05.2017'):='''01.05.2017'' as May';
v_am('01.06.2017'):='''01.06.2017'' as June';
v_am('01.07.2017'):='''01.07.2017'' as July';
v_am('01.08.2017'):='''01.08.2017'' as August';
v_am('01.09.2017'):='''01.09.2017'' as September';
v_am('01.10.2017'):='''01.10.2017'' as October';
v_am('01.11.2017'):='''01.11.2017'' as November';
v_am('01.12.2017'):='''01.12.2017'' as December';

for i in 
        ( 
          with tab as (select to_char(d.dat,'dd.mm.yyyy') ff , d.dat dat from smp_tmp d)
          select t.dat,t.ff,
                 --v_am(t.ff)res --not work
                 --v_am( to_char(trunc(sysdate,'month'),'dd.mm.yyyy')) work_
          from tab t
        ) 
        loop
dbms_output.put_line(i.ff);
dbms_output.put_line(v_am(i.ff)); --work

end loop;          

end;



Собственно сабж...
Спасибо!
...
Рейтинг: 0 / 0
коллекция в запросе
    #39521188
Фотография Fogel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkЗдравствуйте!
Ткните носом- не могу найти объяснений происходящему...


Код: 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.
declare 
  type am_type is table of varchar2(200) index by varchar2(100);
  v_am am_type ;
begin
v_am('01.01.2017'):='''01.01.2017'' as January';
v_am('01.02.2017'):='''01.02.2017'' as February';
v_am('01.03.2017'):='''01.03.2017'' as March';
v_am('01.04.2017'):='''01.04.2017'' as April';
v_am('01.05.2017'):='''01.05.2017'' as May';
v_am('01.06.2017'):='''01.06.2017'' as June';
v_am('01.07.2017'):='''01.07.2017'' as July';
v_am('01.08.2017'):='''01.08.2017'' as August';
v_am('01.09.2017'):='''01.09.2017'' as September';
v_am('01.10.2017'):='''01.10.2017'' as October';
v_am('01.11.2017'):='''01.11.2017'' as November';
v_am('01.12.2017'):='''01.12.2017'' as December';

for i in 
        ( 
          with tab as (select to_char(d.dat,'dd.mm.yyyy') ff , d.dat dat from smp_tmp d)
          select t.dat,t.ff,
                 --v_am(t.ff)res --not work
                 --v_am( to_char(trunc(sysdate,'month'),'dd.mm.yyyy')) work_
          from tab t
        ) 
        loop
dbms_output.put_line(i.ff);
dbms_output.put_line(v_am(i.ff)); --work

end loop;          

end;
...
Рейтинг: 0 / 0
коллекция в запросе
    #39521192
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_am(t.ff)res -- does not work due to correlated argument "t.ff"
v_am(to_char(trunc(sysdate,'month'),'dd.mm.yyyy')) works -- due to there is no correlated argument (it is equivalent to literal argument)
...
Рейтинг: 0 / 0
коллекция в запросе
    #39521223
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk
Код: plsql
1.
v_am( to_char(trunc(sysdate,'month'),'dd.mm.yyyy'))

Вычисляется PL/SQL-ем и заменяется на :B1wellvk
Код: plsql
1.
v_am(t.ff)

Не может быть вычислено ни PL/SQL-ем, ни SQL-ем - неизвестно какой элемент коллекции.
...
Рейтинг: 0 / 0
коллекция в запросе
    #39521324
wellvk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,
Я правильно понимаю, что коллекция должна быть объявлена на уровне схемы?
...
Рейтинг: 0 / 0
коллекция в запросе
    #39521514
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvkЯ правильно понимаю, что коллекция должна быть объявлена на уровне схемы?Нет.
Во-первых, в SQL нет ассоциативных массивов, а тем более таких.
Во-вторых, даже если bind-ить коллекцию целиком, SQL не умеет обращаться к её элементу по индексу.

How PL/SQL Resolves Identifier Names: Resolution of Names in Static SQL Statements
...
Рейтинг: 0 / 0
коллекция в запросе
    #39522364
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
коллекция в запросе
    #39522481
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wellvk,

а что не так?
12-ka

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
...
dbms_output.put_line(i.ff ||' - '||v_am(i.ff)); --work
...
01.01.2017 - '01.01.2017' as January
01.02.2017 - '01.02.2017' as February
01.03.2017 - '01.03.2017' as March
01.04.2017 - '01.04.2017' as April
01.05.2017 - '01.05.2017' as May
01.06.2017 - '01.06.2017' as June
01.07.2017 - '01.07.2017' as July
01.08.2017 - '01.08.2017' as August
01.09.2017 - '01.09.2017' as September
01.10.2017 - '01.10.2017' as October
01.11.2017 - '01.11.2017' as November
01.12.2017 - '01.12.2017' as December

Statement processed.

0.01 seconds




....
stax
...
Рейтинг: 0 / 0
коллекция в запросе
    #39522492
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Staxа что не так?Станислав, снимись с ручника.
...
Рейтинг: 0 / 0
коллекция в запросе
    #39522494
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicStaxа что не так?Станислав, снимись с ручника.

работает ж вроде

или вопрос в закомментированном?
--v_am(t.ff)res --not work
--v_am( to_char(trunc(sysdate,'month'),'dd.mm.yyyy')) work_

....
stax
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / коллекция в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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