Jika teman-teman menggunakan query sql yang sama berulang-ulang dalam program aplikasi, maka dapat menggunakan stored procedure untuk menyimpan query tersebut dan panggil saja stored procedure yang telah dibuat tadi jika ingin digunakan. Stored Procedure merupakan kumpulan perintah atau statement SQL yang disimpan di dalam database dengan nama tertentu.
Keuntungan penggunaan Stored procedure ini dapat menyembunyikan query sql didalam kode program. Query sql akan ditulis dan dieksekusi disisi server database sehingga dapat meningkatkan kecepatan aplikasi. Dapat di gunakan berulang-ulang dan dapat mengamankan nama tabel database yang digunakan.
Dalam tutorial ini kita akan menggunakan database toko dan satu table bernama produk.
Buka sql server management studio teman-teman, buat database baru bernama toko, buat satu tabel bernama produk seperti gambar dibawah ini.
Insert contoh data dengan menuliskan query sql seperti dibawah ini.
INSERT INTO produk VALUES ('CONERLLO CHOCOLUV 135', 25000, 100);
INSERT INTO produk VALUES ('WALLS NINJA JELLY', 25000, 100);
INSERT INTO produk VALUES ('RAINBOW PEAK', 25000, 150);
INSERT INTO produk VALUES ('PADDLE POP CHOKO KICK', 25000, 150);
INSERT INTO produk VALUES ('CONELO DISC VAN', 25000, 150);
Memulai membuat stored procedure, untuk penamaan sebuah stored procedure saran saya tambahkan awalan sp, sp_, stp atau stp_ untuk membedakan sebuah stored procedure dengan nama tabel.
klik kanan pada stored procedures yang berada dalam toko->programmability pilih new stored procedure..
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Maribelajarcoding
-- Create date: 12 April 2020
-- Description: Return all data produk
-- =============================================
CREATE PROCEDURE stp_getAllProduk
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * FROM produk
END
GO
Keterangan:
Create procedure berguna untuk membuat procedure baru.
stp_getAllProduk merupakan nama procedure.
Set nocount on menyembunyikan pesan jumlah baris yang terpengaruh.
select * from produk merupakan query untuk menampilkan semua data produk.
Pilih execute atau f5 untuk menyimpan stored procedure.
Untuk menjalankan stored procedure tadi, ketikkan exec stp_getAllProduk pada query.
Untuk menghapus stored procedure ketikkan drop proc nama_stored_procedure pada query.
Buat stored procedure baru untuk menyimpan data produk baru.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Maribelajarcoding
-- Create date: 12 April 2020
-- Description: Insert new data produk
-- =============================================
CREATE PROCEDURE stp_insertProduk
-- Add the parameters for the stored procedure here
@nama_barang varchar(50),
@harga int,
@stock int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
insert into produk(NAMA_BARANG, HARGA, STOCK) values (@nama_barang, @harga, @stock)
END
GO
Pilih execute atau f5 untuk menyimpan. @nama_barang, @harga, dan @stock merupakan variabel untuk menyimpan data yang dikirim. Sesuaikan tipe variabel dengan field tabel produk. Untuk menjalankan stp_insertProduk seperti dibawah ini. Isi parameter diurutkan sesuai dengan stored procedure.
exec stp_insertProduk 'NAMA_BARANG', HARGA,STOCK;
Contoh:
exec stp_insertProduk 'VASELINE', 30000,50;
Ketikkan exec stp_getAllProduk pada query untuk melihat apakah data berhasil disimpan.
stp_getProdukbyID, stored procedure untuk menampilkan data produk berdasarkan id produk.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Maribelajarcoding
-- Create date: 12 April 2020
-- Description: Get data by Id Produk
-- =============================================
CREATE PROCEDURE stp_getProdukbyID
-- Add the parameters for the stored procedure here
@id_barang int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * from produk where ID_BARANG=@id_barang
END
GO
Jalankan stp_getProdukbyID
exec stp_getProdukbyID 6
stp_editProduk Stored procedure untuk mengubah data produk berdasarkan id produk.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Maribelajarcoding
-- Create date: 12 April 2020
-- Description: Update data produk by id produk
-- =============================================
CREATE PROCEDURE stp_editProduk
-- Add the parameters for the stored procedure here
@id_barang int,
@nama_barang varchar(50),
@harga int,
@stock int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
update produk set NAMA_BARANG=@nama_barang, HARGA=@harga, STOCK=@stock
where ID_BARANG=@id_barang
END
GO
Jalankan stp_editProduk.
exec stp_editProduk 6, 'Vaseline',39000,50;
stp_deleteProduk Stored procedure untuk menghapus data produk berdasarkan id produk.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Maribelajarcoding
-- Create date: 12 April 2020
-- Description: Delete data produk by id produk
-- =============================================
CREATE PROCEDURE stp_deleteProduk
-- Add the parameters for the stored procedure here
@id_barang int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
delete from produk where ID_BARANG=@id_barang
END
GO
Jalankan stp_deleteProduk untuk menghapus data produk dengan id ke enam.
exec stp_deleteProduk 6