Membuat Function dan Stored Procedure dengan Database SQL Server 2014
Untuk post kali ini saya akan menunjukkan contoh penggunaan
Function dan Stored Procedure secara lengkap. Yang dibutuhkan adalah database
yang baru. Silahkan download disini
Bagi yang belum bisa membuat database, silahkan klik MEMBUAT DATABASE DENGAN SQL SERVER
Bagi yang belum memahami CRUD silahkan klik CRUD SQL Server
Bagi yang belum memahami select (menampilkan data) silahkan
klik SELECT, SELECT JOIN, DAN PIVOT SQL SERVER
Bagi yang belum memahami apa itu Function dan Stored
procedure, silahkan klik FUNCTION DAN STORED PROCEDURE SQL SERVER
BACA JUGA
BACA JUGA
- Cara membuat aplikasi desktop dengan c# dan sql server
- Cara membuat database sql server
- PortPlayer, Software alternatif pemutar video audio terbaik
Dibawah ini adalah FUNCTION DAN STORED PROCEDURE yang
digunakan
--function untuk auto number barang
CREATE FUNCTION Auto_barang()
returns CHAR(10)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(10),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_barang, 3)), 0)
FROM barang
WHERE Substring(id_barang, 2, 5) = @tgl
SET @id = 'B-' + @tgl + '.'
+ RIGHT('0'+Cast(@urut+1 AS VARCHAR(3)), 3)
RETURN @id
END
go
--function untuk menambah barang
CREATE PROCEDURE Insert_barang (@nama_barang VARCHAR(50),
@harga_jual DOUBLE PRECISION,
@harga_beli DOUBLE PRECISION,
@stok_barang INT)
AS
BEGIN TRANSACTION
DECLARE @id CHAR(10)
SET @id = dbo.Auto_barang()
INSERT INTO barang
(id_barang,
nama_barang,
harga_jual,
harga_beli,
stok_barang)
VALUES (@id,
@nama_barang,
@harga_jual,
@harga_beli,
@stok_barang)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--procedure untuk mengubah data barang
CREATE PROCEDURE Update_barang (@id CHAR(10),
@nama_barang VARCHAR(50),
@harga_jual DOUBLE PRECISION,
@harga_beli DOUBLE PRECISION,
@stok_barang INT)
AS
BEGIN TRANSACTION
UPDATE barang
SET nama_barang = @nama_barang,
harga_jual = @harga_jual,
harga_beli = @harga_beli,
stok_barang = @stok_barang
WHERE id_barang = @id
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
-----------------------------------------------------------------------------------------------------------------------------
--FUNCTION UNTUK AUTO PELANGGAN
CREATE FUNCTION Auto_pelanggan()
returns CHAR(10)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(10),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_pelanggan, 3)), 0)
FROM pelanggan
WHERE Substring(id_pelanggan, 2, 5) = @tgl
SET @id = 'P-' + @tgl + '.'
+ RIGHT('0'+Cast(@urut+1 AS VARCHAR(3)), 3)
RETURN @id
END
go
--procedure untuk insert pelanggan
CREATE PROCEDURE Insert_pelanggan (@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
DECLARE @id CHAR(10)
SET @id = dbo.Auto_pelanggan()
INSERT INTO pelanggan
(id_pelanggan,
nama_pelanggan,
alamat_pelanggan)
VALUES (@id,
@nama,
@alamat)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--procedure untuk mengubah data pelanggan
CREATE PROCEDURE Update_pelanggan (@id CHAR(10),
@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
UPDATE pelanggan
SET nama_pelanggan = @nama,
alamat_pelanggan = @alamat
WHERE id_pelanggan = @id
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
-----------------------------------------------------------------------------------------------------------------
--FUNCTION UNTUK AUTONUMBER SUPLIER
CREATE FUNCTION Auto_suplier()
returns CHAR(10)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(10),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_suplier, 3)), 0)
FROM suplier
WHERE Substring(id_suplier, 2, 5) = @tgl
SET @id = 'S-' + @tgl + '.'
+ RIGHT('0'+Cast(@urut+1 AS VARCHAR(3)), 3)
RETURN @id
END
go
--procedure untuk menambah data suplier
CREATE PROCEDURE Insert_suplier (@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
DECLARE @id CHAR(10)
SET @id = dbo.Auto_suplier()
INSERT INTO suplier
(id_suplier,
nama_suplier,
alamat_suplier)
VALUES (@id,
@nama,
@alamat)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--procedure untuk mengubah data suplier
CREATE PROCEDURE Update_suplier (@id CHAR(10),
@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
UPDATE suplier
SET nama_suplier = @nama,
alamat_suplier = @alamat
WHERE id_suplier = @id
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
---------------------------------------------------------------------------
--FUNCTION UNTUK AUTONUMBER PENJUALAN
CREATE FUNCTION Auto_penjualan()
returns CHAR(12)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(12),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_penjualan, 4)), 0)
FROM penjualan
WHERE Substring(id_penjualan, 3, 5) = @tgl
SET @id = 'PJ-' + @tgl + '.'
+ RIGHT('00'+Cast(@urut+1 AS VARCHAR(4)), 4)
RETURN @id
END
go
----procedure untuk menambah penjualan
CREATE PROCEDURE Insert_penjualan (@id_pelanggan CHAR(10),
@tanggal DATE)
AS
BEGIN TRANSACTION
DECLARE @id CHAR(12)
SET @id = dbo.Auto_penjualan()
INSERT INTO penjualan
(id_penjualan,
id_pelanggan,
tanggal_penjualan)
VALUES (@id,
@id_pelanggan,
@tanggal)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
---------------------------------------------------------------------
--FUNCTION UNTUK AUTONUMBER PEMBELIAN
CREATE FUNCTION Auto_pembelian()
returns CHAR(12)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(12),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_pembelian, 4)), 0)
FROM pembelian
WHERE Substring(id_pembelian, 3, 5) = @tgl
SET @id = 'PB-' + @tgl + '.'
+ RIGHT('00'+Cast(@urut+1 AS VARCHAR(4)), 4)
RETURN @id
END
go
--procedure untuk menambah pembelian
CREATE PROCEDURE Insert_pembelian (@id_suplier CHAR(10),
@tanggal DATE)
AS
BEGIN TRANSACTION
DECLARE @id CHAR(12)
SET @id = dbo.Auto_pembelian()
INSERT INTO pembelian
(id_pembelian,
id_suplier,
tanggal_pembelian)
VALUES (@id,
@id_suplier,
@tanggal)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
------------------------------------------------------------------------------------
--PROCEDURE UNTUK MENAMBAH DETAIL
CREATE PROCEDURE Insert_detail (@id CHAR(12),
@id_barang CHAR(10),
@qty INT,
@status BIT)
AS
BEGIN TRANSACTION
IF @status = 1
INSERT INTO detail_penjualan
VALUES (@id,
@id_barang,
@qty)
ELSE
INSERT INTO detail_pembelian
VALUES (@id,
@id_barang,
@qty)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
------------------------------------------------------------------------------------
--MENAMPILKAN DATA
CREATE PROCEDURE Select_penjualan
AS
BEGIN TRANSACTION
SELECT a.id_penjualan,
p.id_pelanggan,
p.nama_pelanggan,
p.alamat_pelanggan,
a.tanggal_penjualan
FROM penjualan a
JOIN pelanggan p
ON a.id_pelanggan = p.id_pelanggan
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
SELECT *
FROM barang
--MENAMPILKAN PENJUALAN BERDASARKAN ID_PELANGGAN
CREATE PROCEDURE Select_penjualan_by_id(@id_pelanggan CHAR(10))
AS
BEGIN TRANSACTION
SELECT b.id_barang,
b.nama_barang,
b.harga_jual,
dp.qty_penjualan,
b.harga_jual * dp.qty_penjualan'TOTAL HARGA'
FROM penjualan penjualan
JOIN detail_penjualan dp
ON penjualan.id_penjualan = dp.id_penjualan
JOIN barang b
ON dp.id_barang = b.id_barang
JOIN pelanggan p
ON penjualan.id_pelanggan = p.id_pelanggan
WHERE p.id_pelanggan = @id_pelanggan
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--MENAMPILKAN DATA PEMBELIAN
CREATE PROCEDURE Select_pembelian
AS
BEGIN TRANSACTION
SELECT a.id_pembelian,
p.id_suplier,
p.nama_suplier,
p.alamat_suplier,
a.tanggal_pembelian
FROM pembelian a
JOIN suplier p
ON a.id_suplier = p.id_suplier
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
CREATE FUNCTION Auto_barang()
returns CHAR(10)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(10),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_barang, 3)), 0)
FROM barang
WHERE Substring(id_barang, 2, 5) = @tgl
SET @id = 'B-' + @tgl + '.'
+ RIGHT('0'+Cast(@urut+1 AS VARCHAR(3)), 3)
RETURN @id
END
go
--function untuk menambah barang
CREATE PROCEDURE Insert_barang (@nama_barang VARCHAR(50),
@harga_jual DOUBLE PRECISION,
@harga_beli DOUBLE PRECISION,
@stok_barang INT)
AS
BEGIN TRANSACTION
DECLARE @id CHAR(10)
SET @id = dbo.Auto_barang()
INSERT INTO barang
(id_barang,
nama_barang,
harga_jual,
harga_beli,
stok_barang)
VALUES (@id,
@nama_barang,
@harga_jual,
@harga_beli,
@stok_barang)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--procedure untuk mengubah data barang
CREATE PROCEDURE Update_barang (@id CHAR(10),
@nama_barang VARCHAR(50),
@harga_jual DOUBLE PRECISION,
@harga_beli DOUBLE PRECISION,
@stok_barang INT)
AS
BEGIN TRANSACTION
UPDATE barang
SET nama_barang = @nama_barang,
harga_jual = @harga_jual,
harga_beli = @harga_beli,
stok_barang = @stok_barang
WHERE id_barang = @id
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
-----------------------------------------------------------------------------------------------------------------------------
--FUNCTION UNTUK AUTO PELANGGAN
CREATE FUNCTION Auto_pelanggan()
returns CHAR(10)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(10),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_pelanggan, 3)), 0)
FROM pelanggan
WHERE Substring(id_pelanggan, 2, 5) = @tgl
SET @id = 'P-' + @tgl + '.'
+ RIGHT('0'+Cast(@urut+1 AS VARCHAR(3)), 3)
RETURN @id
END
go
--procedure untuk insert pelanggan
CREATE PROCEDURE Insert_pelanggan (@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
DECLARE @id CHAR(10)
SET @id = dbo.Auto_pelanggan()
INSERT INTO pelanggan
(id_pelanggan,
nama_pelanggan,
alamat_pelanggan)
VALUES (@id,
@nama,
@alamat)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--procedure untuk mengubah data pelanggan
CREATE PROCEDURE Update_pelanggan (@id CHAR(10),
@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
UPDATE pelanggan
SET nama_pelanggan = @nama,
alamat_pelanggan = @alamat
WHERE id_pelanggan = @id
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
-----------------------------------------------------------------------------------------------------------------
--FUNCTION UNTUK AUTONUMBER SUPLIER
CREATE FUNCTION Auto_suplier()
returns CHAR(10)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(10),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_suplier, 3)), 0)
FROM suplier
WHERE Substring(id_suplier, 2, 5) = @tgl
SET @id = 'S-' + @tgl + '.'
+ RIGHT('0'+Cast(@urut+1 AS VARCHAR(3)), 3)
RETURN @id
END
go
--procedure untuk menambah data suplier
CREATE PROCEDURE Insert_suplier (@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
DECLARE @id CHAR(10)
SET @id = dbo.Auto_suplier()
INSERT INTO suplier
(id_suplier,
nama_suplier,
alamat_suplier)
VALUES (@id,
@nama,
@alamat)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--procedure untuk mengubah data suplier
CREATE PROCEDURE Update_suplier (@id CHAR(10),
@nama VARCHAR(50),
@alamat VARCHAR(100))
AS
BEGIN TRANSACTION
UPDATE suplier
SET nama_suplier = @nama,
alamat_suplier = @alamat
WHERE id_suplier = @id
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
---------------------------------------------------------------------------
--FUNCTION UNTUK AUTONUMBER PENJUALAN
CREATE FUNCTION Auto_penjualan()
returns CHAR(12)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(12),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_penjualan, 4)), 0)
FROM penjualan
WHERE Substring(id_penjualan, 3, 5) = @tgl
SET @id = 'PJ-' + @tgl + '.'
+ RIGHT('00'+Cast(@urut+1 AS VARCHAR(4)), 4)
RETURN @id
END
go
----procedure untuk menambah penjualan
CREATE PROCEDURE Insert_penjualan (@id_pelanggan CHAR(10),
@tanggal DATE)
AS
BEGIN TRANSACTION
DECLARE @id CHAR(12)
SET @id = dbo.Auto_penjualan()
INSERT INTO penjualan
(id_penjualan,
id_pelanggan,
tanggal_penjualan)
VALUES (@id,
@id_pelanggan,
@tanggal)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
---------------------------------------------------------------------
--FUNCTION UNTUK AUTONUMBER PEMBELIAN
CREATE FUNCTION Auto_pembelian()
returns CHAR(12)
AS
BEGIN
DECLARE @tgl CHAR(5),
@id CHAR(12),
@urut INT
SET @tgl =CONVERT (CHAR(5), Getdate(), 2)
SELECT @urut = Isnull(Max(RIGHT(id_pembelian, 4)), 0)
FROM pembelian
WHERE Substring(id_pembelian, 3, 5) = @tgl
SET @id = 'PB-' + @tgl + '.'
+ RIGHT('00'+Cast(@urut+1 AS VARCHAR(4)), 4)
RETURN @id
END
go
--procedure untuk menambah pembelian
CREATE PROCEDURE Insert_pembelian (@id_suplier CHAR(10),
@tanggal DATE)
AS
BEGIN TRANSACTION
DECLARE @id CHAR(12)
SET @id = dbo.Auto_pembelian()
INSERT INTO pembelian
(id_pembelian,
id_suplier,
tanggal_pembelian)
VALUES (@id,
@id_suplier,
@tanggal)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
------------------------------------------------------------------------------------
--PROCEDURE UNTUK MENAMBAH DETAIL
CREATE PROCEDURE Insert_detail (@id CHAR(12),
@id_barang CHAR(10),
@qty INT,
@status BIT)
AS
BEGIN TRANSACTION
IF @status = 1
INSERT INTO detail_penjualan
VALUES (@id,
@id_barang,
@qty)
ELSE
INSERT INTO detail_pembelian
VALUES (@id,
@id_barang,
@qty)
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
------------------------------------------------------------------------------------
--MENAMPILKAN DATA
CREATE PROCEDURE Select_penjualan
AS
BEGIN TRANSACTION
SELECT a.id_penjualan,
p.id_pelanggan,
p.nama_pelanggan,
p.alamat_pelanggan,
a.tanggal_penjualan
FROM penjualan a
JOIN pelanggan p
ON a.id_pelanggan = p.id_pelanggan
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
SELECT *
FROM barang
--MENAMPILKAN PENJUALAN BERDASARKAN ID_PELANGGAN
CREATE PROCEDURE Select_penjualan_by_id(@id_pelanggan CHAR(10))
AS
BEGIN TRANSACTION
SELECT b.id_barang,
b.nama_barang,
b.harga_jual,
dp.qty_penjualan,
b.harga_jual * dp.qty_penjualan'TOTAL HARGA'
FROM penjualan penjualan
JOIN detail_penjualan dp
ON penjualan.id_penjualan = dp.id_penjualan
JOIN barang b
ON dp.id_barang = b.id_barang
JOIN pelanggan p
ON penjualan.id_pelanggan = p.id_pelanggan
WHERE p.id_pelanggan = @id_pelanggan
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
--MENAMPILKAN DATA PEMBELIAN
CREATE PROCEDURE Select_pembelian
AS
BEGIN TRANSACTION
SELECT a.id_pembelian,
p.id_suplier,
p.nama_suplier,
p.alamat_suplier,
a.tanggal_pembelian
FROM pembelian a
JOIN suplier p
ON a.id_suplier = p.id_suplier
IF @@ERROR = 0
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
go
Silahkan copy paste program diatas. Untuk selanjutnya, kami
akan memberikan tutorial membuat aplikasi sistem informasi dengan database dan
Function dan Procedure ini.
artikel & tutorial yang sangat" bermanfaat.. lanjutkan broo..!
ReplyDelete