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