循环自定义类型对象离子程序
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;
如果这不是您要查找的内容,请编辑您的问题以解释您究竟想遍历什么。对象类型是标量,因此尝试对其调用 first
或 last
或尝试访问第 ith 元素没有意义。
我创建了以下类型:
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;
如果这不是您要查找的内容,请编辑您的问题以解释您究竟想遍历什么。对象类型是标量,因此尝试对其调用 first
或 last
或尝试访问第 ith 元素没有意义。