Apa perbedaan antara mengakhiri pernyataan Oracle sql dengan titik koma atau dengan garis miring pada baris berikutnya?

8

Dua kueri berikut tampaknya setara ketika dijalankan dalam sql * plus:

1.

select * from user_tables;

2.

select * from user_tables
/

Apakah ada perbedaan antara kedua versi?

bernd_k
sumber

Jawaban:

11

Tidak ada perbedaan untuk pernyataan SQL tunggal. Karakter '/' pada barisnya memberitahu SQL * Plus untuk menjalankan perintah di buffer. Anda bisa menggunakan titik koma di akhir sebagian besar pernyataan SQL sebagai singkatan untuk '/'. Jika Anda ingin menjalankan blok PL / SQL atau mengeksekusi beberapa pernyataan SQL seperti CREATE TYPE, Anda harus menggunakan tanda '/'

SQL> begin
  2    null;
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> create type foo as object (
  2    col1 number,
  3    col2 number );
  4  /

Type created.

Alat yang berbeda mungkin memiliki konvensi yang sedikit berbeda untuk cara Anda menjalankan beberapa pernyataan SQL dan PL / SQL dalam skrip jadi perlu diketahui bahwa ini adalah khusus SQL * Plus.

Gua Justin
sumber
Apakah analog dengan SQL Server GO? (Pada dasarnya, pemisah batch.)
Nick Chammas
@NickChammas - Lebih atau kurang, ya.
Justin Cave
5

Dan selain apa yang disebutkan Justin - karena /menjalankan apa pun yang ada di buffer, itu juga dapat digunakan setelah mengedit perintah sebelumnya, atau bahkan hanya untuk menjalankan perintah yang sama beberapa kali.

Jika Anda memanggil edsqlplus, ia akan mencoba untuk menulis file temp AFIEDT.BUFdi direktori Anda saat ini, dan kemudian memunculkan editor (vi, notepad, dll.), Agar Anda dapat mengedit perintah terakhir yang dikirim. Begitu Anda keluar dari editor, Anda gunakan /untuk mengirim buffer yang dimodifikasi.

Joe
sumber
1
Saya mendapatkan bkriszio.blogspot.com/2006/11/… nostalgia .
bernd_k