declare
type rec_1 is record(
e_nm varchar2(10),
e_no number );
r1 rec_1;
--select EMPNO, ename into r1 from emp where empno = 7369;
procedure proc_t1(r1 rec1) as
begin
select EMPNO, ename
into r1.e_no, r1.e_nm
from emp
where empno = 7369;
dbms_output.put_line(r1.e_nm);
end;
编写此代码后出现语法错误。任何人都可以告诉我为什么会出现这种语法错误吗?enter image description here
答案 0 :(得分:0)
我无法告诉代码的意图,但也许你的意思是:
declare
procedure proc_t1
is
type emp_rectype is record
( id emp.empno%type
, name emp.ename%type );
l_emp emp_rectype;
begin
select empno, ename into l_emp.id, l_emp.name
from emp
where empno = 7369;
dbms_output.put_line(l_emp.name);
end;
begin
proc_t1();
end;
注意:
除非您打算在其他地方重复使用记录类型,否则无法在程序之外声明记录类型,在此示例中您不会这样做。如果要重复使用它,请将其移到过程声明之上。
过程参数默认为IN
模式,这是只读模式,因此在您的示例中,select into
将失败。覆盖传入的参数没有意义,除非您想要对其进行转换并将其作为结果传回。