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

Identifikasi nomor telepon dalam iterasi PL/SQL

Apa perlunya loop di sini? Anda harus menulis ulang pernyataan pembaruan Anda menjadi seperti ini:

UPDATE t_numbers tn
   SET tn.country = (SELECT ic.country
                       FROM int_codes ic
                      WHERE ic.int_code = substr(tn.phone_number, 1, 4))
 WHERE tn.country is null
   AND EXISTS (SELECT 1
                 FROM int_codes ic
                WHERE ic.int_code = substr(tn.phone_number, 1, 4));

Kemudian ulangi hal yang sama untuk 3, 2, dan 1 sebagai berikut (untuk 3):

UPDATE t_numbers tn
   SET tn.country = (SELECT ic.country
                       FROM int_codes ic
                      WHERE ic.int_code = substr(tn.phone_number, 1, 3))
 WHERE tn.country is null
   AND EXISTS (SELECT 1
                 FROM int_codes ic
                WHERE ic.int_code = substr(tn.phone_number, 1, 3));

PERBARUI:

Anda juga dapat mengulang 4 hingga 1 untuk menyelesaikan tugas

  begin
    for i in 1..4 loop
      UPDATE t_numbers tn
       SET tn.country = (SELECT ic.country
                           FROM int_codes ic
                          WHERE ic.int_code = substr(tn.phone_number, 1, (5-i)))
     WHERE tn.country is null
       AND EXISTS (SELECT 1
                     FROM int_codes ic
                    WHERE ic.int_code = substr(tn.phone_number, 1, (5-i)));
    end loop;
  END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah XML ke Objek OCI-Lob?

  2. Perbarui formulir Apex Tabular dengan PLSQL

  3. Referensi yang bagus untuk Oracle PL/SQL

  4. Penggunaan Ruang Tinggi Dari crfclust.bdb

  5. Cara menghapus kolom duplikat dari join di SQL