我想創建一個PL/SQL過程,需要通過遊標執行循環。我已經在oracle論壇上讀過,PL/SQL 8i不支持子標量查詢。我該如何解決在使用子標量查詢的Oracle PL/SQL 8i中循環遊標的問題?
這是我到目前爲止有:
DECLARE
CURSOR C1
IS
SELECT texto,id_evento,clave_evento FROM gegf.eventos_omega_rima WHERE id_evento IN
(select max(eo.id_evento) from gegf.eventos_omega_rima eo, correctivo_rima.equipos b
where eo.fecha_ins_tab > sysdate - 25/24 and eo.fecha_ins_tab < sysdate - 1/24 and upper(eo.ORIGEN) = upper(b.nodo) and upper(b.red) = 'RIMA' group by eo.clave_evento);
r_emp C1%ROWTYPE;
BEGIN
OPEN C1;
LOOP
FETCH c1 INTO r_emp;
EXIT WHEN C1%NOTFOUND;
INSERT INTO CORRECTIVO_RIMA.T_CLOB VALUES (r_emp.TEXTO);
END LOOP;
CLOSE c1;
END;
/
我怎麼可能解決辦法的事實,我不能在我使用的PL/SQL版本中使用subscalar查詢?
Oracle 8i?真?這已經過時了十多年了 - 我很確定即使支持標量子查詢。你的問題到底是什麼?你得到的錯誤是什麼?你爲什麼首先使用遊標循環?大多數情況下,這樣一個遊標可以被一個更加高效的基於集合的解決方案替代,只需一個語句。 –
我的客戶是一家大公司,所以建議數據庫升級只是爲了讓我的生活更輕鬆,這是不可能的(即使我認爲他們應該升級他們的系統)。 Oracle 8i附帶的PL/SQL版本缺少數據庫支持的一些功能,其中一個是子標量查詢。我想要做的是循環選擇的行來解析一個巨大的clob字段,並用該數據創建一個新表。巨大的CLOB是每行有數據的txt文件,即:字段X:值Y.我只需要恢復其中的一些字段。 – Negashion
根據Tom Kyte的文章:「你也可以(因爲Oracle8i數據庫版本8.1.5,無論如何)包含一個標量子查詢」。 –