sql >> データベース >  >> RDS >> Oracle

DBA_PROCEDURESビューでプロシージャが見つかりません

    正解については、UPDATEセクションをご覧ください。

    DBA_PROCEDURESビューでは、プロシージャー名を小文字にすることはできません。大文字を使用するか、大文字の機能を適用してください。

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

    更新

    名前を小文字にすることができるのは、コンパイル時に二重引用符で囲む場合のみです。

    たとえば、

    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>
    

    ただし、上記のビューでは、 PROCEDURE_NAMEの結果は返されません。 。

    理由

    PROCEDURE_NAME 列には、パッケージの一部であるプロシージャのプロシージャ名のみが含まれます。 。 スタンドアロン手順の場合 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>
    

    ご覧のとおり、procedure_name package's procedureのみがあります ただし、stand-alone procedure object_nameの下にのみリストされています 。



    1. DBA以外のユーザーを使用してOracleでユーザーを作成するには、どのような権限が必要ですか?

    2. MySqlのテーブルを1つの共通フィールドで結合しますが、共通フィールドの値は異なります

    3. SQL ServerのROUND()の例

    4. jsonでエンコードされたデータをmysqlに挿入する