create or replace procedure select_sal(dno employee.nationno%type)
is
  type empcur is ref cursor;
  emp_cur empcur;
  emp_record employee%rowtype;
  sql_sta varchar2(100);
begin
  sql_sta :='select * from employee where nationno = dno';
  open emp_cur for sql_sta;
  loop
    fetch emp_cur into emp_record;
    exit when emp_cur%notfound;
    dbms_output.put_line('员工:'||emp_record.employeename||'的工资为:'
    ||emp_record.sal);
  end loop;
  close emp_cur;
end select_sal;
提示:dno为无效字符
请高手指教,并纠正,谢谢了!

解决方案 »

  1.   

    create or replace procedure select_sal(dno employee.nationno%type)
    is
      type empcur is ref cursor;
      emp_cur empcur;
      emp_record employee%rowtype;
      sql_sta varchar2(100);
    begin
      sql_sta :='select * from employee where nationno ='||dno;
      open emp_cur for sql_sta;
      loop
      fetch emp_cur into emp_record;
      exit when emp_cur%notfound;
      dbms_output.put_line('员工:'||emp_record.employeename||'的工资为:'
      ||emp_record.sal);
      end loop;
      close emp_cur;
    end select_sal;
      

  2.   

    CREATE OR REPLACE PROCEDURE select_sal(dno employee.nationno%TYPE) IS
      TYPE empcur IS REF CURSOR;
      emp_cur    empcur;
      emp_record employee%ROWTYPE;
      sql_sta    VARCHAR2(100);
    BEGIN
      sql_sta := 'select * from employee where nationno = ' || to_char(dno);
      OPEN emp_cur FOR sql_sta;
      LOOP
        FETCH emp_cur
          INTO emp_record;
        EXIT WHEN emp_cur%NOTFOUND;
        dbms_output.put_line('员工:' || emp_record.employeename || '的工资为:' ||
                             emp_record.sal);
      END LOOP;
      CLOSE emp_cur;
    END select_sal;
    sql_sta := 'select * from employee where nationno = dno';
    修改为:
    sql_sta := 'select * from employee where nationno = ' || to_char(dno);