Saya terus melupakan ini dan kembali lagi! Saya pikir jawaban terbaik adalah kombinasi dari tanggapan yang diberikan sejauh ini.
Pertama, &adalah awalan variabel di sqlplus/sqldeveloper, maka masalahnya - ketika muncul, itu diharapkan menjadi bagian dari nama variabel.
SET DEFINE OFF akan menghentikan interpretasi sqlplus &dengan cara ini.
Tetapi bagaimana jika Anda perlu menggunakan variabel sqlplus dan literal &karakter?
- Anda perlu SET DEFINE ON agar variabel berfungsi
- Dan SET ESCAPE ON untuk menghindari penggunaan &.
misalnya
set define on
set escape on
define myvar=/forth
select 'back\\ \& &myvar' as swing from dual;
Menghasilkan:
old 1: select 'back\\ \& &myvar' from dual
new 1: select 'back\ & /forth' from dual
SWING
--------------
back\ & /forth
Jika Anda ingin menggunakan karakter pelarian yang berbeda:
set define on
set escape '#'
define myvar=/forth
select 'back\ #& &myvar' as swing from dual;
Saat Anda menyetel karakter escape tertentu, Anda mungkin melihat 'SP2-0272:karakter escape tidak boleh berupa alfanumerik atau spasi'. Ini mungkin berarti Anda sudah memiliki karakter pelarian yang ditentukan, dan hal-hal menjadi referensi diri yang mengerikan. Cara bersih untuk menghindari masalah ini adalah dengan melarikan diri terlebih dahulu:
set escape off
set escape '#'