sql >> Database teknologi >  >> RDS >> Oracle

Fejl i Oracle PL/SQL-proceduren

Du kan se fejlen fra pakken ved hjælp af show errors umiddelbart efter udførelse af sætningen, eller med select * from user_errors where name = 'COLUMN_SEC_PACKAGE' .

Din pakketekst mangler en END; du har en til funktionen, men ikke til pakken:

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
/

Det er nyttigt at specificere, hvad du slutter på hvert punkt, så du nemt kan udvælge, hvad der mangler; Indrykning hjælper selvfølgelig også på det. Du har heller ikke vist en / efter pakkespecifikationen, som måske bare er en copy-and-paste fejl. Du skal køre begge kommandoer med en / efter hver:

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



  1. Synkroniser lokal Microsoft MySQL-database til fjern-mysql-database planlagt dagligt

  2. Hvordan skal jeg skrive PHP $_POST vars i en mysql_query funktion?

  3. MySQL INSERT INTO table SELECT FROM another_table, inde i en PROCEDURE

  4. Postgresql - ydeevne ved brug af array i stor database