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

Prozedur in DBA_PROCEDURES-Ansicht kann nicht gefunden werden

HINWEIS Bitte sehen Sie sich den UPDATE-Abschnitt für die richtige Antwort an.

Der Prozedurname darf in der Ansicht DBA_PROCEDURES nicht in Kleinbuchstaben geschrieben werden. Verwenden Sie Großbuchstaben oder wenden Sie die UPPER-Funktion an.

SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE procedure_name ='GG';

AKTUALISIEREN

Der einzige Fall, in dem Sie den Namen in Kleinbuchstaben schreiben können, ist, wenn Sie ihn beim Kompilieren in doppelte Anführungszeichen setzen.

Zum Beispiel

SQL> CREATE OR REPLACE
  2  PROCEDURE "p"
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL> SELECT object_name, procedure_name, object_type FROM user_procedures where procedure_name='p';

no rows selected

SQL>

Aber die obige Ansicht gibt immer noch kein Ergebnis für PROCEDURE_NAME zurück .

Grund

PROCEDURE_NAME Spalte enthält nur den Prozedurnamen für die Prozeduren, die Teil eines PACKAGE sind . Für EIGENSTÄNDIGE VERFAHREN Sie müssen OBJECT_NAME verwenden .

SQL> -- stand alone procedure in lower case
SQL> CREATE OR REPLACE
  2  PROCEDURE "p"
  3  AS
  4  BEGIN
  5    NULL;
  6  END;
  7  /

Procedure created.

SQL>
SQL>  -- package
SQL> CREATE OR REPLACE
  2  PACKAGE test_p
  3  IS
  4    PROCEDURE p;
  5  END test_p;
  6  /

Package created.

SQL>
SQL> -- package body with a procedure
SQL> CREATE OR REPLACE
  2  PACKAGE BODY test_p
  3  IS
  4  PROCEDURE p
  5  IS
  6  BEGIN
  7    NULL;
  8  END;
  9  END test_p;
 10  /

Package body created.

SQL>
SQL> SELECT object_name, procedure_name, object_type FROM user_procedures;

OBJECT_NAME     PROCEDURE_NAME  OBJECT_TYPE
--------------- --------------- ---------------
TEST_P          P               PACKAGE
p                               PROCEDURE
TEST_P                          PACKAGE

SQL>

Also, wie Sie sehen können, der procedure_name hat nur die Prozedur des package's procedure , jedoch das stand-alone procedure wird nur unter object_name aufgeführt .