sql >> Database >  >> RDS >> Oracle

Fout in Oracle PL/SQL-procedure

U kunt de fout van het pakket zien met show errors onmiddellijk na het uitvoeren van de instructie, of met select * from user_errors where name = 'COLUMN_SEC_PACKAGE' .

Uw pakkettekst mist een END; je hebt er een voor de functie, maar niet voor het pakket:

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
/

Het is handig om op elk punt aan te geven wat u wilt beëindigen, zodat u gemakkelijk kunt zien wat er ontbreekt; inspringen helpt dat natuurlijk ook. Je hebt ook geen / . getoond na de pakketspecificatie, wat misschien een kopieer- en plakfout is. Je moet beide commando's uitvoeren, met een / na elk:

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. VOOR UPDATE v/s VERGRENDELEN IN DE DELENMODUS:sta gelijktijdige threads toe om de bijgewerkte statuswaarde van de vergrendelde rij te lezen

  2. Importeer een schema in een ander nieuw schema - Oracle

  3. Hoe gebruik ik Oracle vanuit .NET?

  4. Checkbox-waarden lezen met behulp van de implode-functie