Wednesday, 12 September 2012

Belajar Stored Procedure SQL Server

 

Belajar Stored Procedure Stored Procedure merupakan kumpulan satement SQl atau subrutin yang disimpan dalam database dan dapat dipanggil oleh aplikasi untuk mengakses sistem database relasional/

Contoh 1: Tanpa parameter
Contoh penggunaannya misalnya dalam tabel karyawan ingin merapihkan penulisan nama karyawan misalnya Budi andita
andika Utama
CAHYADI

akan dirapihkan menjad, Huruf Kapital pada huruf pertamanya selanjutnya huruf kecil, sehingga menjadi seperti ini:




CREATE PROCEDURE Rubahnama AS

/* Rubah dulu ke huruf kecil */
Update     mstKaryawan set nama_lengkap=lower(nama_lengkap)

/* Rubah dulu tanda  spasi dengan (*) asterik */
Update     mstKaryawan set nama_lengkap=REPLACE(nama_lengkap, ' ', '*')

/* Rubah huruf pertama dengan huruf besar */
Update     mstKaryawan set nama_lengkap = UPPER(LEFT(nama_lengkap, 1)) + RIGHT(nama_lengkap, LEN(nama_lengkap) - 1)

/* Rubah * menjadi spasi dan rubah huruf pertama setelah spasi menjadi huruf besar */
While (Select count(*) from mstkaryawan where CHARINDEX('*', nama_lengkap)>0)>0
begin
    Update mstKaryawan Set nama_lengkap = left(nama_lengkap,CHARINDEX('*', nama_lengkap)-1)+' '+
    UPPER(SUBSTRING(nama_lengkap,CHARINDEX('*', nama_lengkap)+1,1))+
    SUBSTRING(nama_lengkap,CHARINDEX('*', nama_lengkap)+2,len(nama_lengkap))
    Where CHARINDEX('*', nama_lengkap)>0

    if (Select count(*) from mstkaryawan where CHARINDEX('*', nama_lengkap)>0)=0
           BREAK
    else
           CONTINUE
end


Contoh 2 : Menggunakan parameter 
Contoh diatas tidak menggunakan parameter, sekarang kita coba contoh yang lain

CREATE PROCEDURE [dbo].[Mutasi] @tgl1 as Datetime,@tgl2 as Datetime  AS

Select a.KodeBarang,b.NamaBarang, b.Satuan,a.Qawal,a.QIn, a.QOut, a.QAdj, a.QAwal+a.Qin-a.Qout as QAkhir from (
Select KodeBarang,SUM(QAwal) as QAwal, SUM(QIn) as Qin, SUM(QOut) as QOut from (
/*Stock Awal*/
Select x.KodeBarang,SUM(x.Qty) as QAwal,0 as QIn, 0 as QOut from (

 
/*Transaksi Masuk sebelum periode */
Select KodeBarang,SUM(Qty) as Qty from Trans_Masuk
Where Tanggal<@tgl1
Group By KodeBarang
UNION ALL

 
/*Transaksi Keluar sebelum periode */
Select KodeBarang,SUM(Qty)*-1 as Qty from Trans_Keluar
Where Tanggal<@tgl1
Group By KodeBarang
) X  Group By KodeBarang
UNION ALL

/*Transaksi*/
Select y.KodeBarang,0 as QAwal,SUM(y.QIn) as QIn,SUM(Qout) as QOut from (

 
/*Transaksi Masuk selama periode parameter */
Select KodeBarang,SUM(Qty) as QIn,0 from Trans_Masuk
Where Tanggal>=@tgl1 AND a.Tanggal<=@tgl2
Group By KodeBarang
UNION ALL

 
/*Transaksi Keluar selama periode parameter */
Select KodeBarang,0,SUM(Qty) as QOut from Trans_Keluar
Where Tanggal>=@tgl1 AND a.Tanggal<=@tgl2
Group By KodeBarang
) Y  Group By y.KodeBarang
) TblAll Group By KodeBarang) a inner join MDBRG b On a.KodeBarang = b.KodeBarang


Terlihat parameternya adalah @tgl1 dan @tgl2
Tampilkan mutasi periode 1 Agustus 2012 hingga 31 Agustus 2012, maka tampilannya akan seperti ini

Perintahnya Exec Mutasi '8/1/2012','8/31/2012'



Semoga Bermanfaat!

No comments:
Write comments