我想創建一個函數,它返回一個可以在FROM子句中使用的對象。根據對oracle文檔的研究,我發現一個PIPELINED函數是我需要的。甲骨文管道功能
我有這樣的代碼:
CREATE TYPE type_struct AS OBJECT
(
i NUMBER
);
CREATE TYPE tp_struct AS TABLE OF type_struct;
CREATE OR REPLACE FUNCTION gen_nums (na NUMBER, nb NUMBER)
RETURN tp_struct PIPELINED
IS
rec type_struct;
counter NUMBER;
BEGIN
counter := na;
WHILE (counter <= nb)
LOOP
SELECT counter
INTO rec
FROM dual;
counter := counter + 1;
PIPE ROW (rec);
END LOOP;
RETURN;
END gen_nums;
/
預期的結果是從「NA」到「NB」,既包括記錄的表。
但是我編譯功能時出現此錯誤:
ORA 00932不一致的數據類型預期UDT了數
由於內部分配名稱與參數名稱不匹配,您的代碼將無法編譯。如果您要編輯您的代碼進行發佈,請確保它仍然正確。 – APC
謝謝你注意!編輯完成! –