Как обрабатывать возвращаемый набор строк?
Запрос:
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;
А потом как?
for x in (твой запрос)
объявлять переменную x не нужно
Цитата: unmoved
пишешь примерно следующие:
for x in (твой запрос)
объявлять переменную x не нужно
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 очередному элементу массива? если да, то как это будет выглядеть?
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. Переделать запрос просто, это цикл и перебирает все записи, а обращение к ним через точку.
Спасибо, попробую!