Variabel SQL: Mendeklarasikan, Mengatur, dan Memilih Variabel di SQL Server

โšก Ringkasan Cerdas

Variabel SQL Server adalah objek bernama yang berfungsi sebagai tempat penampung untuk satu nilai data dalam memori. Sebuah variabel harus dideklarasikan dengan pernyataan DECLARE sebelum dapat diberi nilai dan digunakan kembali.

  • ๐Ÿ“ฆ Definisi: Variabel SQL Server menyimpan satu nilai dan berfungsi sebagai tempat penampung untuk lokasi memori.
  • ๐Ÿ”ต Lokal dan Global: SQL Server mendukung variabel lokal yang diawali dengan @ yang dideklarasikan pengguna, dan variabel global yang dikelola sistem yang diawali dengan @@.
  • ๐Ÿ“ MENYATAKAN: Pernyataan DECLARE membuat sebuah variabel dan, secara default, menginisialisasinya dengan NULL.
  • ๐Ÿ”€ Tiga metode penugasan: Nilai dapat ditetapkan selama DECLARE, dengan SET, atau dengan SELECT.
  • ๐Ÿ”Ž Subkueri skalar: Baik SET maupun SELECT dapat membaca satu nilai dari sebuah query ke dalam sebuah variabel.
  • ๐Ÿง  SET versus SELECT: Perintah SET menetapkan satu variabel dan mengikuti standar ANSI, sedangkan perintah SELECT dapat menetapkan beberapa variabel sekaligus.

Variabel SQL Server: DECLARE, SET, dan SELECT

Apa itu Variabel di SQL Server?

In MSSQL ServerVariabel adalah objek yang berfungsi sebagai tempat penampung untuk lokasi memori. Sebuah variabel menyimpan satu nilai data yang dapat Anda baca dan gunakan kembali di seluruh batch atau prosedur.

Tipe Variabel dalam SQL: Lokal, Global

MS SQL Server memiliki dua jenis variabel:

  • Variabel lokal
  • Variabel global

Namun, pengguna hanya dapat membuat variabel lokal. Gambar di bawah ini menjelaskan dua jenis variabel yang tersedia di MS SQL Server.

Diagram dari dua tipe variabel di SQL Server: variabel lokal dan variabel global.

Variabel lokal

  • Seorang pengguna mendeklarasikan variabel lokal.
  • Secara default, nama variabel lokal diawali dengan @.
  • Setiap variabel lokal dibatasi ruang lingkupnya pada batch atau prosedur saat ini dalam sesi tertentu.

Variabel global

  • Sistem tersebut memelihara variabel global; pengguna tidak dapat mendeklarasikan variabel tersebut.
  • Nama variabel global diawali dengan @@.
  • Ini menyimpan informasi yang terkait dengan sesi.

Cara MENYATAKAN variabel dalam SQL

Sebelum menggunakan variabel apa pun dalam batch atau prosedur di SQLAnda harus mendeklarasikannya. Perintah DECLARE membuat variabel yang berfungsi sebagai tempat penampung lokasi memori. Variabel tersebut hanya dapat digunakan pada bagian selanjutnya dari batch atau prosedur setelah deklarasi dibuat.

Sintaks TSQL:

DECLARE  { @LOCAL_VARIABLE[AS] data_type  [ = value ] }

Aturan:

  • Inisialisasi bersifat opsional saat deklarasi.
  • Secara default, DECLARE menginisialisasi variabel ke NULL.
  • Menggunakan kata kunci 'AS' adalah opsional.
  • Untuk mendeklarasikan lebih dari satu variabel lokal, tambahkan koma setelah definisi pertama, lalu berikan nama variabel berikutnya dan tipe data.

Contoh Mendeklarasikan Variabel

Pertanyaan: Dengan 'AS'

DECLARE @COURSE_ID AS INT;

Pertanyaan: Tanpa 'AS'

DECLARE @COURSE_NAME VARCHAR (10);

Kueri: DEKLARASIkan dua variabel

DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);

Menetapkan nilai ke Variabel SQL

Anda dapat menetapkan nilai ke sebuah variabel dengan tiga cara berikut:

  • Saat mendeklarasikan variabel menggunakan kata kunci DECLARE.
  • Menggunakan SET.
  • Menggunakan SELECT.

Mari kita lihat ketiga cara tersebut secara detail.

Pada saat deklarasi variabel menggunakan kata kunci DECLARE

Sintaks T-SQL:

DECLARE { @Local_Variable [AS] Datatype [ = value ] }

Di sini, setelah tipe data, Anda dapat menggunakan '=' diikuti dengan nilai yang akan diberikan.

Query:

DECLARE @COURSE_ID AS INT = 5
PRINT @COURSE_ID

Menjalankan kueri akan mencetak nilai yang ditetapkan selama deklarasi, seperti yang ditunjukkan di bawah ini.

Output dari variabel yang ditetapkan selama DECLARE, mencetak nilai 5.

Menggunakan Variabel SQL SET

Terkadang Anda ingin memisahkan deklarasi dan inisialisasi. Perintah SET memberikan nilai pada variabel setelah dideklarasikan. Berikut adalah berbagai cara untuk memberikan nilai menggunakan SET.

Contoh: Memberikan nilai pada sebuah variabel menggunakan SET

sintaks:

DECLARE @Local_Variable <Data_Type>
SET @Local_Variable =  <Value>

Query:

DECLARE @COURSE_ID AS INT
SET @COURSE_ID = 5
PRINT @COURSE_ID

Menjalankan skrip akan mengembalikan nilai yang ditetapkan dengan SET, seperti yang ditunjukkan di bawah ini.

Output dari pemberian nilai ke variabel menggunakan SET, mencetak 5

Contoh: Memberikan nilai pada beberapa variabel menggunakan SET

sintaks:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>,
SET @Local_Variable_1 = <Value_1>
SET @Local_Variable_2 = <Value_2>

Aturan: Satu kata kunci SET hanya dapat menetapkan nilai ke satu variabel.

Query:

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SET @COURSE_ID = 5
SET @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

Kedua pernyataan PRINT mengembalikan kedua nilai yang ditetapkan, seperti yang ditunjukkan di bawah ini.

Output dari pemberian dua variabel dengan SET, mencetak 5 dan UNIX

Contoh: Memberikan nilai pada variabel dengan subkueri skalar menggunakan SET

sintaks:

DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)

Aturan:

  • Sertakan pertanyaan dalam tanda kurung.
  • Kueri tersebut harus berupa kueri skalar, artinya hanya mengembalikan satu baris dan satu kolom. Jika tidak, kueri akan menghasilkan kesalahan.
  • Jika kueri mengembalikan nol baris, maka variabel tersebut diatur ke KOSONG, yaitu NULL.

Anggaplah kita memiliki tabel bernama 'GuruTabel 99' dengan dua kolom, seperti yang ditampilkan di bawah ini. Tabel ini digunakan dalam contoh-contoh berikut.

GuruTabel 99 dengan kolom Tutorial_ID dan Tutorial_name digunakan dalam contoh.

Contoh 1: Ketika subkueri mengembalikan satu baris sebagai hasil

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3)
PRINT @COURSE_NAME

Karena subkueri mengembalikan satu baris yang cocok, variabel tersebut menerima nilai tersebut, seperti yang ditunjukkan di bawah ini.

Output dari subkueri skalar yang diberi operator SET, mencetak nama tutorial yang cocok.

Contoh 2: Ketika subkueri mengembalikan nol baris sebagai hasil

DECLARE @COURSE_NAME VARCHAR (10)
SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

Karena subkueri tidak mengembalikan baris apa pun, nilai variabelnya KOSONG, yaitu NULL, sehingga tidak ada yang tercetak, seperti yang ditunjukkan di bawah ini.

Output dari subkueri skalar SET yang tidak mengembalikan baris apa pun, sehingga variabel menjadi NULL.

Menggunakan Variabel SQL SELECT

Sama seperti SET, Anda juga dapat menggunakan SELECT untuk menetapkan nilai ke variabel setelah mendeklarasikannya dengan DECLARE. Berikut adalah berbagai cara untuk menetapkan nilai menggunakan SELECT.

Contoh: Memberikan nilai pada variabel menggunakan SELECT

sintaks:

DECLARE @LOCAL_VARIABLE <Data_Type>
SELECT @LOCAL_VARIABLE = <Value>

Query:

DECLARE @COURSE_ID INT
SELECT @COURSE_ID = 5
PRINT @COURSE_ID

Perintah SELECT mencetak nilainya, seperti yang ditunjukkan di bawah ini.

Output dari pemberian nilai ke variabel menggunakan SELECT, mencetak 5

Contoh: Memberikan nilai pada beberapa variabel menggunakan SELECT

sintaks:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>,  @Local_Variable _2 = <Value_2>

Aturan: Berbeda dengan SET, SELECT dapat menetapkan nilai ke beberapa variabel yang dipisahkan oleh koma.

DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5)
SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX'
PRINT @COURSE_ID
PRINT @COURSE_NAME

Kedua variabel tersebut ditetapkan dalam satu pernyataan SELECT, seperti yang ditunjukkan di bawah ini.

Output dari pemberian dua variabel dengan satu perintah SELECT, mencetak 5 dan UNIX.

Contoh: Memberikan nilai ke variabel dengan subkueri menggunakan SELECT

sintaks:

DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)

Aturan:

  • Sertakan pertanyaan dalam tanda kurung.
  • Kueri tersebut harus berupa kueri skalar yang mengembalikan satu baris dan satu kolom. Jika tidak, kueri akan menghasilkan kesalahan.
  • Jika kueri mengembalikan nol baris, maka variabel tersebut KOSONG, yaitu NULL.

Pertimbangkan kembali 'GuruMeja 99'.

Contoh 1: Ketika subkueri mengembalikan satu baris sebagai hasil

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1)
PRINT @COURSE_NAME

Subkueri tersebut mengembalikan satu baris, sehingga variabel tersebut menyimpan nilai tersebut, seperti yang ditunjukkan di bawah ini.

Output dari subkueri skalar yang diberi SELECT, mencetak nama tutorial yang cocok.

Contoh 2: Ketika subkueri mengembalikan nol baris sebagai hasil

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5)
PRINT @COURSE_NAME

Jika tidak ada baris yang cocok, variabel tetap KOSONG, yaitu NULL, seperti yang ditunjukkan di bawah ini.

Output dari subkueri skalar SELECT yang tidak mengembalikan baris apa pun, sehingga variabel menjadi NULL.

Contoh 3: Memberikan nilai pada variabel dengan pernyataan SELECT biasa

sintaks:

DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>

Aturan:

  • Berbeda dengan SET, jika kueri mengembalikan beberapa baris, maka nilai variabel akan diatur ke nilai baris terakhir.
  • Jika kueri mengembalikan nol baris, maka variabel tersebut diatur ke KOSONG, yaitu NULL.

Kueri 1: Kueri mengembalikan satu baris

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3
PRINT @COURSE_NAME

Baris yang cocok tunggal tersebut menetapkan nilai variabel, seperti yang ditunjukkan di bawah ini.

Output dari tugas SELECT biasa yang mengembalikan satu baris

Kueri 2: Kueri mengembalikan beberapa baris

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99
PRINT @COURSE_NAME

Jika beberapa baris cocok, variabel tersebut akan menyimpan nilai dari baris terakhir, seperti yang ditunjukkan di bawah ini.

Output dari tugas SELECT reguler yang mengembalikan beberapa baris, simpanping nilai baris terakhir

Kueri 3: Kueri mengembalikan nol baris

DECLARE @COURSE_NAME VARCHAR (10)
SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5
PRINT @COURSE_NAME

Jika tidak ada baris yang cocok, variabel tersebut KOSONG, yaitu NULL, seperti yang ditunjukkan di bawah ini.

Output dari perintah SELECT biasa yang tidak mengembalikan baris apa pun, sehingga variabel menjadi NULL.

Contoh Variabel SQL Lainnya

Variabel yang dideklarasikan juga dapat digunakan di dalam kueri, misalnya dalam klausa WHERE untuk memfilter baris.

Query:

DECLARE @COURSE_ID Int = 1
SELECT * from Guru99 where Tutorial_id = @COURSE_ID

Variabel tersebut menyaring kueri dan mengembalikan baris yang sesuai, seperti yang ditunjukkan di bawah ini.

Hasil penggunaan variabel dalam klausa WHERE untuk memfilter Gurutabel 99

Fakta Menarik Tentang Variabel SQL Server!

  • Variabel lokal dapat ditampilkan menggunakan perintah PRINT maupun SELECT.
  • Tipe data tabel tidak mengizinkan penggunaan 'AS' selama deklarasi.
  • SET mematuhi standar ANSI, sedangkan SELECT tidak.
  • Membuat variabel lokal bernama @ juga diperbolehkan. Misalnya, dapat dideklarasikan sebagai:
'DECLARE @@ as VARCHAR (10)'

Pertanyaan Umum Demo Slot

Setelah perintah DECLARE dijalankan tanpa penugasan, variabel SQL Server akan berisi nilai NULL. Variabel tersebut ada tetapi tidak memiliki nilai sampai Anda menetapkan nilainya menggunakan DECLARE dengan =, SET, atau SELECT. Mengacu pada variabel tersebut sebelum penugasan hanya akan mengembalikan nilai NULL.

Ketika subkueri tidak mengembalikan baris apa pun, SET menetapkan NULL dan menimpa nilai yang ada. Sebaliknya, SELECT membiarkan variabel tidak berubah.ping nilai apa pun yang sudah dimilikinya. Perbedaan ini penting ketika variabel tersebut awalnya memiliki nilai bukan NULL.

Variabel tabel, yang dideklarasikan sebagai DECLARE @t TABLE(โ€ฆ), menyimpan kumpulan hasil kecil yang terbatas pada satu batch. Tidak seperti tabel #temp, variabel ini hanya ada di dalam batch-nya, tidak dapat diubah setelah dibuat, dan seringkali cocok untuk kumpulan data kecil.

Variabel lokal terbatas pada batch, stored procedure, atau trigger tempat variabel tersebut dideklarasikan, di dalam satu sesi. Kata kunci GO mengakhiri sebuah batch, sehingga variabel yang dideklarasikan sebelum GO tidak dapat dirujuk setelahnya.

Sebuah variabel dapat menggunakan hampir semua SQL Server. tipe dataTermasuk tipe data int, decimal, varchar, nvarchar, date, datetime, bit, dan table. Cocokkan variabel dengan kolom yang diwakilinya untuk menghindari kesalahan konversi implisit.

Tetapkan ulang variabel ke dirinya sendiri dengan SET, misalnya SET @counter = @counter + 1. SELECT juga berfungsi: SELECT @total = @total + price. Pola ini menggerakkan perulangan dan total berjalan di dalam skrip dan prosedur tersimpan.

Ya. Kopilot GitHub Dapat menghasilkan pernyataan DECLARE, SET, dan SELECT dari komentar bahasa alami dan menyarankan tipe data yang sesuai. Selalu tinjau nama, tipe, dan logika penugasan yang dihasilkan terhadap skema Anda sebelum menjalankannya di lingkungan produksi.

Asisten AI dan pembelajaran mesin tracmisalnya, bagaimana variabel menerima dan meneruskan nilai, menandai variabel yang belum diinisialisasi atau salah ketik, dan menyarankan penulisan ulang berbasis himpunan yang menggantikan perulangan berbasis variabel yang lambat. Pengembang tetap mengkonfirmasi setiap perubahan terhadap data dan beban kerja aktual.

Ringkaslah postingan ini dengan: