在存储过程中好像不能用数据定义语言底吧,create table之类的都不行。你只能像函数一样调用他

解决方案 »

  1.   

    因为exec 是sql*plus 命令而不是sql语句,所以不能写在PL/SQL块中
      

  2.   

    举个例子给你吧 . 两个存储过程在同一个用户mis下, (建立同义词后可以不用写用户):     CREATE OR REPLACE PROCEDURE MIS.CHECK_SMT_EMP_LIGHT (STATION_NUM in varchar2,MACHINE in varchar2,
                               PPN in varchar2,VER in varchar2,DATA in varchar2,
                               LOC in varchar2,KPN in varchar2,SN in varchar2,
                               Line in varchar2,RES out varchar2) IS   C_EMP_ID    VARCHAR2(25);
       C_OUTPUT varchar2(64);
    BEGIN   SELECT EMP_NO  INTO C_EMP_ID
          FROM SFIS1.C_EMP_DESC_T
          WHERE EMP_NO = DATA  AND ROWNUM = 1;   RES:='OK LIGHT={ON}';
       MIS.delete_smt_error('SMT',machine,Line);  //    引用另一个存储过程  exception   when NO_DATA_FOUND then
          RES:='LIGHT={ON} NO EMP';
      C_OUTPUT :=RES || ' - ' || DATA;END;
    /