我有一個型別
create or replace TYPE "CUSTOM_DATA" IS TABLE OF VARCHAR2(4000)。我可以分配一些值并毫無問題地列印到輸出
declare
cust_data CUSTOM_DATA;
begin
cust_data:=CUSTOM_DATA('A','B','C');
FOR i IN 1 .. cust_data.COUNT
LOOP
DBMS_OUTPUT.put_line (cust_data(i));
END LOOP;
end;
但是我如何在select子句中使用 cust_data,因為我會將它們分配給 ref 游標,我該怎么做?我下面的代碼不起作用
SELECT COLUMN_VALUE as val FROM table(cust_data);
uj5u.com熱心網友回復:
您的代碼有效:
DECLARE
cust_data CUSTOM_DATA;
BEGIN
cust_data:=CUSTOM_DATA('A','B','C');
FOR i IN (SELECT COLUMN_VALUE as val FROM table(cust_data))
LOOP
DBMS_OUTPUT.put_line(i.val);
END LOOP;
END;
/
或者:
DECLARE
cust_data CUSTOM_DATA;
cur SYS_REFCURSOR;
value VARCHAR2(4000);
BEGIN
cust_data:=CUSTOM_DATA('A','B','C');
OPEN cur FOR
SELECT COLUMN_VALUE as val FROM table(cust_data);
LOOP
FETCH cur INTO value;
EXIT WHEN cur%NOTFOUND;
DBMS_OUTPUT.put_line(value);
END LOOP;
END;
/
兩者都輸出:
A B C
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414330.html
標籤:
