Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Erro no procedimento Oracle PL/SQL


Você pode ver o erro do pacote usando show errors imediatamente após executar a instrução, ou com select * from user_errors where name = 'COLUMN_SEC_PACKAGE' .

Falta um END no corpo do seu pacote; você tem um para a função, mas não para o pacote:
CREATE OR REPLACE package body COLUMN_SEC_PACKAGE is
  FUNCTION TEST_SEC( OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2 is
    v_SQL VARCHAR2(2000):='1=0';
  begin
    IF (SYS_CONTEXT('USERENV','SESSION_USER') ='VPD1') THEN
      v_SQL:=NULL;
    END IF;
    RETURN V_SQL;
  end;  -- end of function
-- no end for the package
/

É útil especificar o que você está terminando em cada ponto para que você possa identificar facilmente o que está faltando; recuo ajuda isso também, é claro. Você também não mostrou um / após a especificação do pacote, o que pode ser apenas um erro de copiar e colar. Você precisa executar os dois comandos, com um / após cada:
CREATE OR REPLACE PACKAGE COLUMN_SEC_PACKAGE AS
  FUNCTION TEST_SEC (OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2;
END COLUMN_SEC_PACKAGE;
/
CREATE OR REPLACE package body COLUMN_SEC_PACKAGE is
  FUNCTION TEST_SEC( OWNER VARCHAR2, OBJNAME VARCHAR2) RETURN VARCHAR2 is
    v_SQL VARCHAR2(2000):='1=0';
  begin
    IF (SYS_CONTEXT('USERENV','SESSION_USER') ='VPD1') THEN
      v_SQL:=NULL;
    END IF;
    RETURN V_SQL;
  end TEST_SEC;
END COLUMN_SEC_PACKAGE;
/