编译包时出现PLS-00103错误

时间:2014-03-09 04:28:37

标签: oracle plsql syntax-error

当我尝试编译这个包时,我收到错误:PLS-00103:遇到以下其中一个时遇到符号“BEGIN”:end function pragma procedure子类型当前游标删除存在

有人可以帮助我吗?

CREATE OR REPLACE PACKAGE PCK_TB_ESTADO
IS
  PROCEDURE PRC_INSERE
  (P_NM_REDE_FUNCIONARIO IN TB_FUNCIONARIO.NM_REDE_FUNCIONARIO%TYPE,
  P_DS_ESTADO IN TB_ESTADO.DS_ESTADO%TYPE,
  P_ID_UF IN TB_ESTADO.ID_UF%TYPE,
  P_MENS OUT VARCHAR2)
  BEGIN
    CREATE SEQUENCE SEQ_ESTADO
      MINVALUE 1
      MAXVALUE 99
      START WITH 1
      INCREMENT BY 1;
    INSERT INTO TB_ESTADO
    VALUES (SEQ_ESTADO.NEXTVAL,P_DS_ESTADO,P_ID_UF,SYSDATE,P_NM_REDE_FUNCIONARIO);
    COMMIT;
    EXCEPTION
      WHEN DUP_VAL_ON_INDEX THEN
        ROLLBACK;
        P_MENS := 'Você tentou executar um comando INSERT ou UPDATE que criou um valor duplicado em um campo restrito por um index único.';
      WHEN OTHERS THEN
        ROLLBACK;
        P_MENS := 'Erro.';
  END;
END PCK_TB_ESTADO;

1 个答案:

答案 0 :(得分:4)

以下是问题:

  1. 包规范仅包含它应包含的过程/函数的签名。 procs / functions的代码进入Package Body

  2. 您的过程中不能直接使用DDL语句。但是,您可以使用EXECUTE IMMEDIATE

  3. 执行DDL
  4. IS/AS

  5. 之前,Package Body中的过程定义应该有BEGIN个关键字