oracle自定义对象传参数吗,oracle存储过程,test(测试)时传自定义类型参数问题

使用集合变量作为输入参数

CREATETYPEdeptno_table_typeISTABLEOFNUMBER(2);

/

CREATETYPEdname_table_typeISTABLEOFVARCHAR2(10);

/

CREATETYPEloc_table_typeISTABLEOFVARCHAR2(20);

/

CREATEORREPLACEPROCEDUREadd_department(

deptno_tabledeptno_table_type,

dname_tabledname_table_type,loc_tableloc_table_type)

IS

BEGIN

FORALLiIN1..deptno_table.COUNT

INSERTINTOdeptVALUES

(deptno_table(i),dname_table(i),loc_table(i));

EXCEPTION

WHENDUP_VAL_ON_INDEXTHEN

RAISE_APPLICATION_ERROR(-20012,'部门号不能重复');

END;

/

DECLARE

deptno_tabledeptno_table_type:=deptno_table_type(60,70,80);

dname_tabledname_table_type:=dname_table_type('计划处','质量处','技术处');

loc_tableloc_table_type:=loc_table_type('呼和浩特','包头','乌海');

BEGIN

add_department(deptno_table,dname_table,loc_table);

END;

/

18-18:使用集合变量作为输出参数

CREATETYPEename_table_typeISTABLEOFVARCHAR2(10);

/

CREATETYPEjob_table_typeISTABLEOFVARCHAR2(10);

/

CREATEORREPLACEPROCEDUREget_emp(

dnoNUMBER,ename_tableOUTename_table_type,

job_tableOUTjob_table_type)IS

BEGIN

SELECTename,jobBULKCOLLECTINTOename_table,job_table

FROMempWHEREdeptno=dno;

EXCEPTION

WHENNO_DATA_FOUNDTHEN

RAISE_APPLICATION_ERROR(-20010,'该部门不存在');

END;

/

DECLARE

ename_tableename_table_type;

job_tablejob_table_type;

BEGIN

get_emp(&dno,ename_table,job_table);

FORiIN1..ename_table.COUNTLOOP

dbms_output.put_line('姓名:'||ename_table(i)

||',岗位:'||job_table(i));

ENDLOOP;

END;

/

下面是存储过程代码:

SQL code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值