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.