sql >> Databáze >  >> RDS >> Oracle

Nelze najít proceduru v zobrazení DBA_PROCEDURES

POZNÁMKA Správnou odpověď naleznete v sekci AKTUALIZACE.

Název procedury nemůže být v pohledu DBA_PROCEDURES psán malými písmeny. Použijte velká písmena nebo použijte funkci UPPER.

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

AKTUALIZACE

Jediným případem, kdy byste mohli mít název malým písmenem, je, když jej při kompilaci uzavřete do dvojitých uvozovek.

Například,

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>

Výše uvedené zobrazení však přesto nevrátí žádný výsledek pro PROCEDURE_NAME .

Důvod

PROCEDURE_NAME sloupec bude mít pouze název procedury pro procedury, které jsou součástí BALÍKU . Pro SAMOSTATNÉ POSTUPY musíte použít OBJECT_NAME .

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>

Takže, jak vidíte, procedure_name má pouze package's procedure , nicméně stand-alone procedure je uveden pouze pod object_name .



  1. jaký má smysl serializovat pole pro jejich uložení do db?

  2. funkce isset() vrací true, i když položka není nastavena

  3. Jak vložit data do tabulky Hive(0.13.1)?

  4. Jak opravit chybu při provádění DDL alter table events drop cizího klíče FKg0mkvgsqn8584qoql6a2rxheq prostřednictvím prohlášení JDBC