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

Masukkan catatan massal ke basis data jarak jauh (dblink) menggunakan Kumpulkan Massal

Pesan kesalahan tampaknya cukup jelas :

Memang Anda menautkan ke pertanyaan lain yang menjelaskan bahwa ini adalah batasan implementasi. PL/SQL tidak mengizinkan kami untuk menggunakan pernyataan FORALL di seluruh tautan basis data dan hanya itu.

Untungnya Anda tidak perlu menggunakan pengumpulan massal dan FORALL dalam kode Anda. Sebuah INSERT INTO sederhana .... Pernyataan SELECT akan melihat Anda benar:

INSERT INTO [email protected] 
    SELECT A.PARTY_SITE_NUMBER FMAT_FMATID, B.ZADDRESSFMATID F4F_FMATID,
    C.ADDRESS1 FMAT_VALUE, B.STREET F4F_VALUE , 'ADDRESS1' 
    FROM [email protected] A , f4f_corporateaccount B , [email protected] C
    WHERE 1=1
    AND B.ROLECODETEXT = 'Site Account'
    AND A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
    AND A.STATUS = 'A'

    UNION ALL 
    ------------------------------------------------------Address2-----------------------------------------------------------------------------

    SELECT A.PARTY_SITE_NUMBER FMAT_FMATID, B.ZADDRESSFMATID F4F_FMATID,
    C.ADDRESS2 FMAT_VALUE, B.addressline1 F4F_VALUE , 'ADDRESS2'  
    FROM [email protected] A , f4f_corporateaccount B , [email protected] C
    WHERE 1=1
    AND B.ROLECODETEXT = 'Site Account'
    AND A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
    AND A.STATUS = 'A'

Kode Anda tidak menggunakan sintaks gabungan ANSI 92 eksplisit dan Anda telah meremas kode sehingga sulit dibaca. Akibatnya mudah untuk melewatkan bahwa Anda belum menulis kondisi bergabung untuk [email protected] C . Jadi kedua subquery akan menghasilkan Produk Cartesian untuk semua record di C . Anda mungkin tidak menginginkan ini.

SELECT A.PARTY_SITE_NUMBER as FMAT_FMATID
        , B.ZADDRESSFMATID as F4F_FMATID
        , C.ADDRESS2 as FMAT_VALUE
        , B.addressline1 as F4F_VALUE
        , 'ADDRESS2'  
FROM [email protected] A
      inner join  f4f_corporateaccount B on A.PARTY_SITE_NUMBER = B.ZADDRESSFMATID
      inner join  [email protected] C on ** something goes here **
WHERE  B.ROLECODETEXT = 'Site Account'
AND A.STATUS = 'A'

Lebih mudah dimengerti, mudah menemukan join yang hilang. Keterbacaan adalah sebuah fitur.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan kustom pagination mengambil kesalahan N baris pertama

  2. aplikasi asp.net tidak terhubung ke oracle 11g bahkan setelah menginstal klien instan oracle untuk 11g

  3. apa perbedaan antara kata kunci gabung dan kata kunci gabung dalam di Oracle sql?

  4. di mana file kelas DMS Oracle?

  5. ORA-01427:subquery baris tunggal mengembalikan lebih dari satu baris