首页 > 技术文章 > oralce 存储过程传入 record 类型的参数?

xwb583312435 2018-05-18 09:43 原文

先定义一个 package , package中含有一个 record 类型的变量

 

create or replace package pkg_record is  
  
 type emp_record is record(  
       ename emp.ename%type,  
       eno emp.empno%type     
 );  
  
end pkg_record;

 

定义一个存储过程

 

    create or replace procedure pro_add_emp(v_emp_rcd in out pkg_record.emp_record)  
    is  
    begin  
          v_emp_rcd.ename := 'xxxxx';  
          v_emp_rcd.eno := 2222;  
    end pro_add_emp;  

 

在 pl sql 中调用该存储过程

 

declare   
  emp_rcd pkg_record.emp_record;  
begin  
    
  select e.ename,e.empno into emp_rcd from emp e where rownum = 1;  
  dbms_output.put_line('调用前...' || emp_rcd.ename || '  ' || emp_rcd.eno);  
    
  pro_add_emp(emp_rcd);  
    
  dbms_output.put_line('调用后...' || emp_rcd.ename || '  ' || emp_rcd.eno);  
end; 

 

执行结果: DBMS output
调用前...SMITH  7369
调用后...xxxxx  2222

 

推荐阅读