create or replace package body pa_emp is
 procedure sp_emp
 (
  P_EMPNO IN EMP.EMPNO%TYPE,
  cur out mycur
  )as
  v_str varchar2(1000);--用于存储动态SQL语句
 begin
   v_str:='SELECT ENAME AS 雇员名,JOB as 工作,SAL as 工资,EMPNO as 雇员号 
           FROM EMP 
           WHERE EMPNO IN(P_EMPNO)';
    open cur for v_str;
end sp_emp;
end pa_emp;
上面是写的一个简单的包,编译说 P_ENAME定义单位使用,为什么呀?~~

解决方案 »

  1.   

    v_str:='SELECT ENAME AS 雇员名,JOB as 工作,SAL as 工资,EMPNO as 雇员号  
      FROM EMP  
      WHERE EMPNO IN('||P_EMPNO||')';
      

  2.   

    WHERE EMPNO IN(P_EMPNO)';
    更改如下:
    WHERE EMPNO IN('||P_EMPNO||')';
    --P_EMPNO是变量不可以放在''中的
      

  3.   

    open cur for 'select * from EMP where EMPNO IN (:1,:2,:3)' using a,b,c;
    lz可是这个意思?
      

  4.   

    关于动态SQL的用法,这里有个总结的比较好的http://www.docin.com/p-34554901.html#