循环自定义类型对象离子程序

Loop custom type object ion procedure

我创建了以下类型:

    CREATE OR REPLACE EDITIONABLE TYPE  "MY_CUSTOM_TYPE" AS OBJECT (
      my_num      NUMBER,
      my_char    VARCHAR2(3000)
    )

在程序内部然后我接受这个参数并想遍历它:

create or replace PROCEDURE my_proc(
P_MY_TYPE IN MY_CUSTOM_TYPE
)
BEGIN

  FOR i IN P_MY_TYPE.FIRST .. P_MY_TYPE.LAST
  LOOP
  dbms_output.put_line( P_MY_TYPE(i).my_num || ' ' ||  P_MY_TYPE(i).my_char);
  END LOOP;

END;

不过我一直收到这个错误:

PLS-00302: component 'FIRST' must be declared

您可能想要创建一个集合类型

create type my_custom_collection
    as table of my_custom_type;

然后将该集合传递给您的过程

create or replace procedure my_proc(
  p_collection my_custom_collection
)
as
begin
  for i in 1..p_collection.count
  loop
    dbms_output.put_line( p_collection(i).my_num || ' ' ||
                          p_collection(i).my_char );
  end loop;
end my_proc;

如果这不是您要查找的内容,请编辑您的问题以解释您究竟想遍历什么。对象类型是标量,因此尝试对其调用 firstlast 或尝试访问第 ith 元素没有意义。