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

Metode alternatif ke tabel temp global untuk Oracle Stored Procedure

Tabel T-SQL Temp pada dasarnya adalah struktur memori. Mereka memberikan manfaat dalam MSSQL yang kurang jelas di Oracle, karena perbedaan dalam dua arsitektur RDBMS. Jadi, jika Anda ingin bermigrasi maka Anda disarankan untuk mengambil pendekatan yang lebih sesuai dengan Oracle.

Namun, Anda memiliki situasi yang berbeda, dan jelas menjaga kedua basis kode tetap sinkron akan membuat hidup Anda lebih mudah.

Hal yang paling dekat dengan tabel sementara yang ingin Anda gunakan adalah koleksi PL/SQL; khususnya, tabel bersarang.

Ada beberapa cara untuk menyatakan ini. Yang pertama adalah menggunakan templat SQL - kursor - dan menentukan tipe tabel bersarang berdasarkan itu. Yang kedua adalah mendeklarasikan tipe record dan kemudian mendefinisikan tabel bersarang di atasnya. Dalam kedua kasus tersebut, isi variabel koleksi dengan operasi massal.

declare
    -- approach #1 - use a cursor
    cursor c1 is 
          select *
          from t23;
    type nt1 is table of c1%rowtype;
    recs1 nt1;

    -- approach #1a - use a cursor with an explicit projection
    cursor c1a is 
          select id, col_d, col_2 
          from t23;
    type nt1a is table of c1a%rowtype;
    recs1 nt1a;


    -- approach #2 - use a PL/SQL record
    type r2 is record (
        my_id number
        , some_date date
        , a_string varchar2(30)
    );
    type nt2 is table of r2;
    recs2 nt2;
begin
    select *
    bulk collect into recs1
    from t23;

    select id, col_d, col_2
    bulk collect into recs2
    from t23;
end;
/

Menggunakan kursor menawarkan keuntungan secara otomatis mencerminkan perubahan pada tabel yang mendasarinya. Meskipun RECORD memberikan keuntungan stabilitas dalam menghadapi perubahan tabel yang mendasarinya. Itu hanya tergantung apa yang Anda inginkan :)

Ada seluruh bab dalam manual referensi PL/SQL. Baca untuk mengetahui lebih lanjut .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan data dari database oracle sebagai file CSV (atau format teks khusus lainnya)

  2. Memasukkan karakter arab di oracle 11g

  3. Cabut Hak Istimewa di Oracle

  4. Bagaimana cara menguji izin sistem file baca/tulis dari direktori Oracle?

  5. Konversikan keep density_rank dari kueri Oracle menjadi postgres