Доброго времени суток!!
Главный вопрос:Как сделать чтобы подставлять любой select в курсор и автоматически без ручной обработки - получать "распечатку" его строк.
Задача: Создать скрипт в который подставляется
запрос - на выходе получать строки запроса в виде текста с разделителями...
SELECT запроса подставляется в курсор и может быть любой сложности...
от простого
select count(*) otvet from guides
до сложного
SELECT H.*, ( SELECT Name FROM Types WHERE Type_id = H.Type_doc ) Nam , -Pledger.Saldo ( 'X', Account, Currency, SYSDATE ) Saldo
FROM (SELECT /*+ INDEX (c CONTRACT_NEXT_NDX)*/ K.Full_name, K.Doc_seria || K.Doc_number, K.Date_reg, ',' || C.Account || ',', C.Currency, C.Type_doc
, NVL ( Universe.Date_cor ( C.Bach, C.Reference, 'PROLONGATION', C.Currency, TRUNC ( SYSDATE ) ), C.Date_open )+ Period Dp
, K.Phone || K.Fax Tel
FROM Contracts C, Clients K
WHERE C.Type_doc IN (1, 2, 3, 4, 5) AND C.Status IN (1, 2) AND K.Reference = C.R_client AND K.Bach = C.B_client AND ( K.Phone || K.Fax IS NOT NULL )) H
WHERE Dp >= TO_DATE ( '01.03.2011', 'dd.mm.yyyy' ) AND Dp <= TO_DATE ( '31.03.2011', 'dd.mm.yyyy' );
Пример решения при простом запросе и предварительной редакции курсора под одну переменную:
DECLARE
CURSOR Cur IS
SELECT Curr_id || CHR ( 9 ) || Rec_id || CHR ( 9 ) || Name || CHR ( 9 ) || Date_off || CHR ( 9 ) || Loggi Otvet
FROM Ha_log
WHERE Status LIKE '* S%' AND Date_off > TO_DATE ( '01.05.2010', 'dd.mm.yyyy' ) AND Date_off < TO_DATE ( '30.06.2010', 'dd.mm.yyyy' );
BEGIN
DELETE FROM Balance WHERE Id = 'N1';
FOR X IN Cur LOOP
INSERT INTO Balance ( Id, Text ) VALUES ( 'N1', X.Otvet );
END LOOP;
COMMIT;
END;