我已经使用
在Oracle中创建了一个类型create or replace type array_type
as varray(6) of varchar2(20);
现在,我想在存储过程中将此变量用作变量。我尝试如下使用它,
create or replace PROCEDURE test_proc()
IS
my_type array_type;
BEGIN
....
这给了我错误
错误(124,24):PL / SQL:ORA-00932:数据类型不一致:应为 CHAR获得了ARRAY_TYPE
如何在存储过程中将此自定义类型用作变量?
答案 0 :(得分:1)
不确定该错误,但是您的proc定义中的括号会出现问题。
这应该有效。
create or replace type array_type
as varray(6) of varchar2(20);
create or replace PROCEDURE test_proc
IS
my_type array_type;
BEGIN
NULL;
END;
答案 1 :(得分:1)
使用嵌套表类型会更加传统
create table tblFoo(
col1 varchar2(10)
);
insert into tblFoo values( 'a' );
insert into tblFoo values( 'b' );
insert into tblFoo values( 'c' );
insert into tblFoo values( 'd' );
create type nt_type as table of varchar2(10);
/
declare
l_nt nt_type := nt_type( 'a', 'd', 'f' );
begin
for i in (select col1
from tblFoo
where col1 MEMBER OF l_nt)
loop
dbms_output.put_line( i.col1 );
end loop;
end;
/