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.