Beberapa pernyataan seperti buat tabel, masukkan ke dalam dll, ambil titik koma di bagian akhir:
CREATE TABLE employees_demo
( employee_id NUMBER(6)
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn_demo NOT NULL
) ;
sementara yang lain suka
set echo on
connect system/manager
melewati tanpa titik koma juga.
Apa alasan di balik ini? Bagaimana saya bisa memutuskan sendiri di mana harus meletakkan titik koma dan di mana tidak?
oracle
oracle-11g-r2
sqlplus
Lazer
sumber
sumber
Jawaban:
Komitmen pada instance lokal dieksekusi saat kembali. Perintah multi-line ke server dieksekusi pada titik koma
Perintah khusus seperti yang dijelaskan dalam manual SQL * Plus adalah satu-satunya yang tidak menerima semi-titik dua. Dimana Perintah SQL harus diakhiri dengan
;
agar dapat diuraikan oleh server.sumber
Ketika Anda memasukkan pernyataan SQL ke dalam SQL * Plus, itu perlu tahu kapan Anda selesai dengan itu, terutama jika perintahnya mencakup baris multple. Oleh karena itu, diperlukan karakter karakter terminal yang dapat diatur dengan
set sqlterminator
. Secara default, karakter ini adalah titik koma:Sekarang, ubah karakter terminal ini menjadi
#
:Pernyataan SQL berakhir (berakhir dieksekusi) dengan a
#
.Anda bertanya: mengapa
set sqlterminator #
tidak diikuti dengan tanda titik koma? Jawab, karena ini bukan pernyataan SQL. Pernyataan yang berhubungan dengan SQL * Plus dan perilakunya, output, koneksi asf (sepertiset echo on
danconnect system/manager
) bukan pernyataan SQL dan karenanya dimasukkan tanpa tanda titik koma.Apa hubungannya ini dengan
/
?Ketika Anda memasukkan pernyataan SQL, SQL * plus mengisi sesuatu yang disebutnya buffer. Buffer ini dapat ditampilkan dengan
list
perintah:(Catatan: Saya hanya memasukkan daftar , sisanya dikembalikan)
The
/
sekarang mengeksekusi apa yang saat ini dalam buffer. Mari kita coba itu:Seperti yang dapat dilihat, permintaan yang sama dijalankan.
sumber
Titik koma adalah titik urutan untuk parser SQL, sedangkan perintah yang dieksekusi dalam SQL * Plus dieksekusi segera pula. Sebagai analogi, bandingkan titik koma dalam program C dengan perintah yang dimasukkan ke dalam shell.
sumber
Cara saya memahaminya adalah bahwa parser SQL umum memiliki banyak kesamaan dengan parser javascript umum, dalam hal ini akan membutuhkan titik koma setelah setiap tempat yang sesuai, tetapi tidak diperlukan kecuali dalam keadaan tertentu. Ketika saya diajari menulis SQL, saya diberi tahu bahwa titik koma adalah bagian dari bahasa itu, bukan operator tambahan yang bisa kami abaikan.
sumber