Di bawah ini adalah contoh penggunaan variabel di SQL Server 2000.
DECLARE @EmpIDVar INT
SET @EmpIDVar = 1234
SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar
Saya ingin melakukan hal yang sama persis di Oracle menggunakan SQL Developer tanpa kerumitan tambahan. Sepertinya hal yang sangat sederhana untuk dilakukan, tetapi saya tidak dapat menemukan solusi yang sederhana. Bagaimana saya bisa melakukannya?
Jawaban:
Saya menggunakan SQL-Developer di Versi 3.2. Hal-hal lain tidak berhasil untuk saya, tetapi ini berhasil:
Juga cara paling apik yang disajikan di sini.
(Jika Anda menghilangkan bagian "definisikan", Anda akan diminta memasukkan nilai itu)
sumber
Ada dua jenis variabel dalam SQL-plus: substitusi dan bind.
Ini adalah substitusi (variabel substitusi dapat menggantikan opsi perintah SQL * Plus atau teks hard-code lainnya):
Ini bind (variabel bind menyimpan nilai data untuk pernyataan SQL dan PL / SQL yang dieksekusi di RDBMS; mereka dapat menyimpan nilai tunggal atau kumpulan hasil lengkap):
Pengembang SQL mendukung variabel substitusi, tetapi ketika Anda menjalankan kueri dengan
:var
sintaks mengikat Anda diminta untuk mengikat (dalam kotak dialog).Referensi:
Variabel substitusi UPDATE agak rumit untuk digunakan, lihat:
sumber
var x
danexec :x
, tidak ada prompt.Di SQL * Plus, Anda dapat melakukan sesuatu yang sangat mirip
Di SQL Developer, jika Anda menjalankan pernyataan yang memiliki sejumlah variabel mengikat (diawali dengan titik dua), Anda akan diminta untuk memasukkan nilai. Seperti yang ditunjukkan Alex, Anda juga dapat melakukan sesuatu yang serupa menggunakan fungsi "Run Script" (F5) dengan sintaks EXEC alternatif yang disarankan Alex.
sumber
select...into
(ORA-01006), jadi Anda harus melakukannyaexec :v_emp_id := 1234;
.Ok saya tahu ini sedikit retasan tetapi ini adalah cara untuk menggunakan variabel dalam kueri sederhana, bukan skrip:
Anda bisa menjalankannya di mana-mana.
sumber
Jawaban sederhana TIDAK.
Namun Anda dapat mencapai sesuatu yang serupa dengan menjalankan versi berikut menggunakan variabel bind:
Setelah Anda menjalankan kueri di atas di SQL Developer, Anda akan diminta untuk memasukkan nilai untuk variabel bind EmployeeID.
sumber
Anda dapat membaca di tempat lain tentang variabel substitusi; mereka cukup berguna di SQL Developer. Tapi saya telah mencoba menggunakan variabel bind di SQL Developer. Inilah yang saya lakukan:
SET SERVEROUTPUT ON
membuatnya jadi teks dapat dicetak ke konsol keluaran skrip.Saya yakin apa yang kami lakukan di sini secara resmi disebut PL / SQL. Kami telah meninggalkan tanah SQL murni dan menggunakan mesin yang berbeda di Oracle. Anda lihat di
SELECT
atas? Dalam PL / SQL Anda selalu harusSELECT ... INTO
variabel atau refcursor. Anda tidak bisa begitu sajaSELECT
dan mengembalikan hasil yang ditetapkan dalam PL / SQL.sumber
Saya pikir cara termudah dalam kasus Anda adalah:
Untuk nilai stringnya akan seperti ini:
sumber
Gunakan kueri berikutnya:
sumber
Coba ini akan berhasil, lebih baik buat prosedur, jika prosedur tidak memungkinkan Anda dapat menggunakan skrip ini.
sumber
Dalam pengembang sql tentukan properti secara default "ON". Jika kasusnya "OFF", gunakan langkah-langkah di bawah ini.
set define on; define batchNo='123'; update TABLE_NAME SET IND1 = 'Y', IND2 = 'Y' WHERE BATCH_NO = '&batchNo';
sumber