Skip to content Skip to sidebar Skip to footer

Membuat Function dan Stored Procedure dengan Database SQL Server 2014



Menu Sebelumnya

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




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 
Silahkan copy paste program diatas. Untuk selanjutnya, kami akan memberikan tutorial membuat aplikasi sistem informasi dengan database dan Function dan Procedure ini. 

1 comment for "Membuat Function dan Stored Procedure dengan Database SQL Server 2014"

  1. artikel & tutorial yang sangat" bermanfaat.. lanjutkan broo..!

    ReplyDelete