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

Mencari nilai NULL untuk Tipe Oracle yang berbeda

Anda dapat mengubah kode Anda untuk melakukan:

   v_lstmt := 'SELECT count(*) FROM userB.tableB WHERE id = '''||v_ret (i).id||''''
     || ' and ('||v_ret (i).col||' is null or '||v_ret (i).col||' = :val)';

   EXECUTE IMMEDIATE v_lstmt INTO cDel using v_ret (i).val;

Itu memeriksa bahwa kolomnya nol atau cocok dengan val . yang disediakan , dan menggunakan variabel bind untuk memberikan nilai yang akan diperiksa untuk mengurangi sedikit penguraian.

Namun ini masih bergantung pada konversi implisit, jadi jika Anda memiliki nilai tanggal dalam tabel misalnya, Anda akan mengandalkan setelan NLS Anda untuk mengonversinya agar sesuai dengan jenis kolom tabel target.

Anda dapat menggunakan all_tab_columns tampilan untuk menemukan tipe data kolom target dan melakukan konversi eksplisit val untuk jenis itu sebelum mengikat. Pendekatan yang lebih terlibat tetapi mungkin lebih kuat adalah dengan menggunakan dbms_sql untuk SQL dinamis dalam alih-alih execute immediate .

Kueri luar tampaknya tidak perlu dinamis, Anda dapat melakukannya:

declare
  v_lstmt   VARCHAR2(32000);
  cDel   number;
begin
  for rec in (SELECT id, col, val FROM tableA) loop
    v_lstmt := 'SELECT count(*) FROM tableB WHERE id = '''||rec.id||''''
      || ' and ('||rec.col||' is null or '||rec.col||' = :val)';


    dbms_output.put_line(v_lstmt);
    EXECUTE IMMEDIATE v_lstmt INTO cDel using rec.val;
    If cDel > 0 Then
      --some code
      cDel := 0;   
    end if;
  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 menghapus nilai tertentu dari string yang dipisahkan koma di Oracle

  2. Dalam urutan apa pernyataan pembaruan Oracle SQL mengubah nilai kolom?

  3. 27 skrip Oracle dba untuk Oracle Database untuk Administrasi dan Pemantauan

  4. Cara mendeklarasikan kursor setelah bagian awal dari prosedur Oracle PL/SQL

  5. Cara Mendapatkan Nama Hari dari Tanggal di Oracle