我正在尝试创建一个函数,该函数返回一个可以在 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 得到了编号