Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как загнать результат выборки в массив? 
:(
    Опции темы
alt5000
  Дата 25.3.2010, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 9.4.2006
Где: г. Выборг

Репутация: нет
Всего: нет



Код

DECLARE
QUR VARCHAR2(1000);
gen_arr apex_application_global.vc_arr2; -- äëÿ ids òåìïëåéòîâ

BEGIN

--dbms_output.put_line('!!!');

select templ_id into gen_arr(1)  from tc_templs_user;

gen_arr(1):= QUR;

FOR z IN 1..gen_arr.count LOOP

dbms_output.put_line(gen_arr(z));
          
END LOOP;

/*APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY(
p_collection_name => 'IR_TEST',
p_query => QUR );*/


END;


Не могу понять как заполнить массив gen_arr
PM MAIL WWW   Вверх
azesmcar
Дата 25.3.2010, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



alt5000

А зачем? Итерацию можно и по запросу сделать
Код

FOR z IN (select templ_id from tc_templs_user) LOOP
...
END LOOP;


Это сообщение отредактировал(а) azesmcar - 25.3.2010, 09:52
PM   Вверх
Zloxa
Дата 25.3.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



а я не могу понять что вы пытаетесь сделать.

А массив gen_arr вы таки смогли заполнить. smile  Правда чем - не понятно.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
alt5000
Дата 25.3.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 9.4.2006
Где: г. Выборг

Репутация: нет
Всего: нет



Цитата(Zloxa @ 25.3.2010,  09:53)
а я не могу понять что вы пытаетесь сделать.

А массив gen_arr вы таки смогли заполнить. smile  Правда чем - не понятно.

smile
PM MAIL WWW   Вверх
Zloxa
Дата 25.3.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(alt5000 @  25.3.2010,  11:50 Найти цитируемый пост)
  smile 

Определенно это внесло полную ясность по сути вопроса. Дополнительных вопросов к Вам не имею. smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DimW
Дата 25.3.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(azesmcar @  25.3.2010,  09:52 Найти цитируемый пост)
А зачем? Итерацию можно и по запросу сделать

а зачем делать итерацию по запросу когда можно использовать BULK COLLECT smile
PM MAIL ICQ   Вверх
azesmcar
Дата 25.3.2010, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата(DimW @  25.3.2010,  14:16 Найти цитируемый пост)
а зачем делать итерацию по запросу когда можно использовать BULK COLLECT smile 

не знаю, для чего-то же придумали циклы, зависит от задачи. Я не совсем понял как может BULK COLLECT решить задачу, которую решают циклы?
PM   Вверх
DimW
Дата 25.3.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



azesmcar, это:
Код

declare
  n pls_integer := 1;
begin  
  for z in (select templ_id from tc_templs_user) loop
    gen_arr(n) := z.templ_id;
    n := n + 1; 
  end loop; 
end; 


эквивалентно этому:
Код

begin
  select templ_id
    bulk collect into gen_arr
    from tc_templs_user;
end; 

PM MAIL ICQ   Вверх
azesmcar
Дата 25.3.2010, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



DimW

Это понятно, ты меня не понял. Автор заливал данные в массив, а потом делал по ним итерацию, я так понял что конечная цель итерация, потому предложил сразу ее же делать, без массива (а зачем он нужен?).

Это сообщение отредактировал(а) azesmcar - 25.3.2010, 14:32
PM   Вверх
DimW
Дата 25.3.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



я просто расценил последнюю итерацию как проверку содержимого в массиве.
в этом то мы и разошлись smile
PM MAIL ICQ   Вверх
azesmcar
Дата 25.3.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата(DimW @  25.3.2010,  14:38 Найти цитируемый пост)
я просто расценил последнюю итерацию как проверку содержимого в массиве.
в этом то мы и разошлись smile 

да в этом вопросе вообще много неясности, и насколько я понимаю у автора нет никакого желания прояснять smile 
PM   Вверх
DimW
Дата 25.3.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



некогда ему, доку читает наверное... 
PM MAIL ICQ   Вверх
alt5000
  Дата 26.3.2010, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 9.4.2006
Где: г. Выборг

Репутация: нет
Всего: нет



Спасибо за терпение. Почитал доку smile На выходе получилась сия конструкция на "балках"

Код

declare
    sels apex_application_global.vc_arr2; -- ÷èñëà èç content çàïèñè
    tmp VARCHAR2(1000); -- ïåðåìåííàÿ ïîëÿ content
    gen_arr apex_application_global.vc_arr2;-- íàáîð id çàïèñåé
    sample_arr apex_application_global.vc_arr2; -- âûáîð øàòòëà
    i pls_integer;
    cnt pls_integer default 0;
begin
  
  /* IDS */
  
  sample_arr(1):= 67;
  sample_arr(2):= 73;
  sample_arr(3):= 69;
  sample_arr(4):= 81;
  sample_arr(5):= 121;
  
  
  select templ_id bulk collect into gen_arr from tc_templs_user where user_id='ALT'; -- Âûáèðàåò ids øàáëîíîâ
  
  for i in 1 .. gen_arr.count loop  
  dbms_output.put_line(gen_arr(i));
  
    select content into tmp from tc_templs_user where user_id = 'ALT' and templ_id = gen_arr(i);-- ñ÷èòûâàåò ïîëå content êîíêðåòíîãî id
        sels:=APEX_UTIL.STRING_TO_TABLE(tmp); -- Âûáèðàåì ÷èñëà èç ïîëÿ content â ìàññèâ
        --dbms_output.put_line(gen_arr(i));
              
              for a in 1..sels.count loop 
            
              /* Îáðàáîòêà ñîâïàäåíèé */
            
              for s in 1..sample_arr.count loop
            
              if sels(a)=sample_arr(s) then
              cnt:=cnt+1;
              dbms_output.put_line('cnt: '||cnt);
              end if;
            
              end loop;
            
            dbms_output.put_line('sels'||' _ '||sels(a));-- âûâîä ìàññèâà
            --dbms_output.put_line('sels'||' _ '||gen_arr(i));
            end loop;
        --dbms_output.put_line(tmp);
        end loop; 
    --dbms_output.put_line(gen_arr(i));

   

  
end;


Теперь как бы еще вопросик. Что-то поискал - не нашел. Как мне убрать последний символ из строки вида 12:54:898: ?
PM MAIL WWW   Вверх
azesmcar
Дата 26.3.2010, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 3
Всего: 211



Цитата(alt5000 @  26.3.2010,  13:10 Найти цитируемый пост)
Как мне убрать последний символ из строки вида 12:54:898: ? 

т.е. функция substr тебе не знакома? smile 
PM   Вверх
alt5000
  Дата 26.3.2010, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 9.4.2006
Где: г. Выборг

Репутация: нет
Всего: нет



Цитата(azesmcar @  26.3.2010,  13:14 Найти цитируемый пост)
substr 


В общем... этой функции нужна позиция (1) и длина (2)

И каким образом удалить последний символ?

Я думал есть ф-ция типа trim, там right_trim, например...
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0868 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.