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

Permintaan Oracle tidak dapat dikompilasi

Saya pikir masalahnya adalah pernyataan dinamis yang Anda coba di EXECUTE IMMEDIATE Anda adalah pernyataan SQL, bukan pernyataan PL/SQL. Dan INTO bukan SQL, itu PL/SQL.

Anda dapat melakukan SQL dynamic dinamis pernyataan hanya dengan satu variabel ikat dan kemudian tempatkan INTO . Anda di luar pernyataan dinamis. Ini didukung saat melakukan SQL dinamis pernyataan:

execute immediate  'select CASE WHEN EXISTS ( SELECT 1 from samples where samplecode = :varSamplecode  and auditflag = 0 and ' || varFilterString || ') then 1 else 0 end from DUAL'
into varResult 
using IN varSampleCode;

Atau Anda dapat melakukan PL/SQL dynamic dinamis blok anonim:

execute immediate  'begin select CASE WHEN EXISTS ( SELECT 1 from samples where samplecode = :varSamplecode  and auditflag = 0 and ' || varFilterString || ') then 1 else 0 end into :varresult from DUAL; end;'
using IN varSampleCode, OUT varResult;

Kali ini INTO harus berada di dalam string dinamis dan menggunakan variabel bind, karena dengan BEGIN dan END; Anda sekarang melakukan PL/SQL dinamis .

Untuk kasus penggunaan Anda, saya akan merekomendasikan opsi pertama, melakukan SQL dinamis dan menempatkan INTO setelah string pernyataan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Ekspresi reguler untuk membagi kolom (string) menjadi beberapa baris berdasarkan pembatas '/ n'

  2. Membuat Pemicu yang berjalan di dua tabel

  3. Gunakan Entity Framework di .net 4.0 dengan database Oracle - mungkin?

  4. Masalah Ekspor/Impor Oracle dengan Tablespace

  5. Apakah ini mungkin di Oracle/Sql?