Saya memiliki skrip SQL yang membuat paket dengan komentar yang berisi ampersand (&). Ketika saya menjalankan skrip dari SQL Plus, saya diminta untuk memasukkan nilai pengganti untuk string yang dimulai dengan &. Bagaimana cara menonaktifkan fitur ini sehingga SQL Plus mengabaikan ampersand?
104
Jika Anda terkadang menggunakan variabel substitusi, Anda mungkin tidak ingin menonaktifkan define. Dalam kasus ini, Anda dapat mengonversi ampersand dari padanan numeriknya seperti dalam
|| Chr(38) ||
atau menambahkannya sebagai karakter tunggal seperti pada|| '&' ||
.sumber
Saya menyelesaikan dengan kode di bawah ini:
dan beri tanda \ di samping & di kiri
'value_\&_intert'
Att
sumber
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
tetapi itu memberi saya kesalahanORA-01780: string literal required
.Anda dapat menyetel karakter khusus, yang dicari saat menjalankan skrip, ke nilai lain dengan menggunakan
SET DEFINE <1_CHARACTER>
Secara default, fungsi DEFINE sendiri aktif, dan disetel ke &
Ini dapat dimatikan - seperti yang telah disebutkan - tetapi dapat juga dihindari dengan cara menyetelnya ke nilai yang berbeda. Berhati-hatilah dengan tanda yang Anda atur. Dalam contoh di bawah ini, saya telah memilih karakter #, tetapi pilihan itu hanyalah sebuah contoh.
sumber
set define off <- Ini adalah solusi terbaik yang saya temukan
Saya juga mencoba ...
set define}
Saya dapat memasukkan beberapa record yang berisi karakter ampersand '&' tetapi saya tidak dapat menggunakan karakter '}' ke dalam teks. Jadi saya memutuskan untuk menggunakan "set define off" dan semuanya bekerja sebagaimana mestinya.
sumber
Menurut FAQ yang bagus ini ada beberapa solusi.
Anda mungkin juga dapat melepaskan tanda ampersand dengan karakter garis miring terbalik
\
jika Anda dapat mengubah komentar.sumber
set escape on
Saya mendapat pernyataan KASUS dengan kolom WHEN = 'teks sesuatu & lebih' LALU ....
Saya menggantinya dengan WHEN column = 'sometext' || CHR (38) || 'lebih banyak teks' LALU ...
Anda juga bisa menggunakan WHEN kolom LIKE 'someext _ more text' THEN ...
(_ adalah karakter pengganti untuk satu karakter)
sumber