执行下面的代码时显示错误

时间:2013-09-16 06:46:39

标签: plsql cursor rowtype

这是我的pl / sql程序:

 declare
   m_no      emp.emp_no%rowtype;
   m_name    emp.emp_name%rowtype;
   m_address emp.address%rowtype;
   cursor raju is 
     SELECT emp_no,
            emp_name,
            address 
       from emp;
 begin
   open raju;
   loop
     fetch raju 
      into m_no,
           m_name,
           m_address;
     dbms_output.put_line(m_no ||''||m_name||''||m_address);
     EXIT WHEN raju%notfound;
   end loop;
   close raju;
 end;

执行上面的代码时出现错误

  

错误报告:
  ORA-06550:第2行,第6栏:
  PLS-00310:使用%ROWTYPE属性,'EMP.EMP_NO'必须命名表,光标或光标变量
  ORA-06550:第2行,第6栏:
  PL / SQL:项目被忽略
  ORA-06550:第3行,第8栏:
  PLS-00310:使用%ROWTYPE属性,'EMP.EMP_NAME'必须命名表,光标或光标变量
  ORA-06550:第3行,第8栏:
  PL / SQL:项目被忽略
  ORA-06550:第4行,第11栏:
  PLS-00310:使用%ROWTYPE属性,'EMP.ADDRESS'必须命名表,光标或光标变量
  ORA-06550:第4行,第11栏:
  PL / SQL:项目被忽略
  ORA-06550:第10行,第18栏:
  PLS-00320:此表达式类型的声明不完整或格式错误   ORA-06550:第10行,第2栏:
  PL / SQL:忽略SQL语句
  ORA-06550:第11行,第23栏:
  PLS-00320:此表达式类型的声明不完整或格式错误   ORA-06550:第11行,第2栏:
  PL / SQL:语句被忽略
  06550. 00000 - “行%s,列%s:\ n%s”
  *原因:通常是PL / SQL编译错误   *操作:

但我没有得到它显示的位置和错误发生的位置。任何人都建议我。

1 个答案:

答案 0 :(得分:2)

您的变量声明错误。

由于您要单独选择和存储列,因此应使用%TYPE属性声明它。

m_no      emp.emp_no%type;
m_name    emp.emp_name%type;
m_address emp.address%type
如果您使用单个变量来存储所有列,则使用

%ROWTYPE属性。

m_emp emp%rowtype