Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Fehler in der Oracle PL/SQL-Prozedur

Sie können den Fehler aus dem Paket mit show errors sehen unmittelbar nach Ausführung der Anweisung oder mit select * from user_errors where name = 'COLUMN_SEC_PACKAGE' .

Ihrem Pakettext fehlt ein END; Sie haben eine für die Funktion, aber nicht für das Paket:

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
/

Es ist hilfreich, an jedem Punkt anzugeben, was Sie beenden, damit Sie leicht erkennen können, was fehlt. Einrückung hilft natürlich auch. Sie haben auch keinen / angezeigt nach der Paketspezifikation, was möglicherweise nur ein Fehler beim Kopieren und Einfügen ist. Sie müssen beide Befehle mit einem / ausführen nach jedem:

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;
/