Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как обрабатывать возвращаемый набор строк?

375
16 марта 2007 года
dominator
199 / / 16.10.2003
PL/SQL, Oracle

Запрос:
DECLARE
v_SaleID VARCHAR2(20);
v_SaleQ - VARCHAR2(20);
BEGIN
SELECT
SALEID,
to_Char(MAX(SALEQ))
INTO v_SaleID, v_SaleQ
from ffmaprep
WHERE
ARTICLE='0003672'
AND SALEDATE <= to_date('01.03.2007', 'DD.MM.YYYY')
AND nvl(SALELOCATIONFROM, SALELOCATIONTO) IN(6)
GROUP BY SALEID, SALEQ;

END;

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

Если не ошибаюсь можно его задать и так:
TYPE t_ResultOfRec IS TABLE OF VARCHAR2(20)
INDEX BY BINARY_INTEGER;
А потом как?
373
19 марта 2007 года
unmoved
216 / / 28.11.2004
пишешь примерно следующие:
for x in (твой запрос)
объявлять переменную x не нужно
375
21 марта 2007 года
dominator
199 / / 16.10.2003
Цитата: unmoved
пишешь примерно следующие:
for x in (твой запрос)
объявлять переменную x не нужно



А можешь чуть подробнее расписать?

for x in (SELECT
SALEID,
to_Char(MAX(SALEQ))
INTO v_SaleID, v_SaleQ
from ffmaprep
WHERE
ARTICLE='0003672'
AND SALEDATE <= to_date('01.03.2007', 'DD.MM.YYYY')
AND nvl(SALELOCATIONFROM, SALELOCATIONTO) IN(6)
GROUP BY SALEID, SALEQ)
ну, а дальше то что? присваивать значение x очередному элементу массива? если да, то как это будет выглядеть?

373
23 марта 2007 года
unmoved
216 / / 28.11.2004
вот тебе пример тут все просто:

declare
-- Переменные
s1 varchar2 (255);
begin
for frec in(select file_name , bytes/(1024*1024) mbytes
from dba_data_files df where upper(df.tablespace_name)='system' order by df.file_name)
loop
s1:='--DF '||frec.file_name||' '||to_char(frec.mbytes);
dbms_output.put_line(s1);
next_file_num:=next_file_num+1;
end loop;
end;

это выведет дата файлы табличного пространства систем, если конечно права есть sysdba. Переделать запрос просто, это цикл и перебирает все записи, а обращение к ним через точку.
375
27 марта 2007 года
dominator
199 / / 16.10.2003
Спасибо, попробую!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог