Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

temukan nama kolom dan nama tabel yang dirujuk dalam SQL

Saya punya solusi bagus untuk Anda, tetapi ada dua hal yang perlu Anda lakukan:

  1. Tempatkan SQL di dalam unit program PL/SQL. Jadi, ya, untuk prosedur tersimpan yang Anda sebutkan.

  2. Kompilasi unit program dan semua tabel dependen (yaitu, instal kode aplikasi Anda) pada instance 12.2 (Anda dapat mengunduh 12.2 di http://www.Oracle.com/technetwork/database/enterprise-edition/downloads/index.html atau Anda dapat membeli Layanan CLoud Exadata Express di cloud.oracle.com atau mendapatkan kredit $300 untuk menggunakannya tanpa biaya selama sebulan di cloud.oracle.com/tryit).

12.2 adalah kunci karena fitur yang BENAR-BENAR ingin Anda gunakan disebut PL/Scope dan merupakan alat kompiler yang mengumpulkan informasi tentang pengidentifikasi PL/SQL (per 11.1) dan penggunaan SQL di dalam PL/'SQL (per 12.2).

CREATE TABLE my_data (n NUMBER)
/

ALTER SESSION SET plscope_settings='identifiers:all, statements:all'
/

CREATE OR REPLACE PROCEDURE my_procedure (n_in IN NUMBER)
   AUTHID DEFINER
IS
   l_n           my_data.n%TYPE;

   CURSOR all_data_cur
   IS
          SELECT *
            FROM my_data
      FOR UPDATE OF n;
BEGIN
   INSERT INTO my_data (n)
        VALUES (n_in);

END;
/

  SELECT idt.line,
         idt.owner || '.' || idt.object_name code_unit, 
         idt.name column_name,
         RTRIM (src.text, CHR (10)) text
    FROM all_identifiers idt, all_source src
   WHERE     idt.usage = 'REFERENCE'
         AND idt.TYPE = 'COLUMN'
         AND idt.line = src.line
         AND idt.object_name = src.name
         AND idt.owner = src.owner
         AND idt.object_name = 'MY_PROCEDURE'
ORDER BY code_unit, line
/

LINE CODE_UNIT          COLUMN_NAME TEXT  
4   STEVEN.MY_PROCEDURE N           l_n           my_data.n%TYPE;
10  STEVEN.MY_PROCEDURE N           FOR UPDATE OF n;
12  STEVEN.MY_PROCEDURE N           INSERT INTO my_data (n)

Semoga membantu!

Banyak lagi contoh PL/Scope di livesql.Oracle.com. Cukup cari "pl/scope" (duh).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Text tidak akan berfungsi dengan NVARCHAR2. Apa lagi yang mungkin tidak tersedia?

  2. 7 hal yang perlu diketahui tentang kompartemen di Oracle Cloud Infrastructure

  3. Bagaimana cara menghindari kata yang dicadangkan di Oracle?

  4. Alat laporan kamus data

  5. Kesalahan adaptor Protokol TNS saat memulai Oracle SQL*Plus