Anda di halaman 1dari 2

-- function untuk pengkodean nik karyawan, format yang dihasilkan 090001,digit 1,2 -- adalah angka tahun, digit 3-6

adalah urutan karyawan tsb masuk,direset setiap tahun create function FCGenerateNIK(@Tgl datetime) returns char(6) as begin declare @th char(2),@dtakhir int,@urutbaru char(4),@nikbaru char(6) set @th=right(year(@Tgl),2) select @dtakhir=max(right(nik,4)) from karyawan where year(tglmasuk)=year(@Tgl) if @dtakhir is null set @dtakhir=0 set @urutbaru= right('000'+cast(@dtakhir+1 as varchar(4)) ,4) set @nikbaru=@th+@urutbaru return @nikbaru end --contoh pemanggilan function secara langsung select dbo.FCGenerateNIK('2012/01/02') select dbo.FCGenerateNIK('2010/01/02') select dbo.FCGenerateNIK('2009/01/02') --atau declare @tmp char(6) set @tmp=dbo. FCGenerateNIK ('2012/01/02') print @tmp --pemanggilan function didalam procedure create procedure SPInsertKaryawan( @nm varchar(50),@lhr datetime, @gd char(1), @al varchar(500),@msk datetime) as begin transaction declare @nik char(6) select @nik=dbo.FCGenerateNIK(@msk) insert into karyawan(nik,namakaryawan,tgllahir,gender,alamat,tglmasuk) values(@nik,@nm,@lhr,@gd,@al,@msk) if @@error=0 commit transaction else rollback transaction -- 4. (%) Buat function untuk menghitung total pendapatan -- pada periode tanggal tertentu -- (parameter input berupa 2 variabel tanggal) --function create function fcPendapatanPerPeriode(@awal datetime,@akhir datetime) returns numeric(18,2) as begin declare @dp numeric(18,2) select @dp=sum(banyak *(harga-potongan)) from detailtransaksi dt join transaksi t on dt.nonota=t.nonota where tglnota between @awal and @akhir return @dp end -- pemanggilan function langsung select dbo.fcPendapatanPerPeriode('2011/10/01','2011/10/20') as totalpendapatan

--atau declare @tmp numeric(18,2) set @tmp=dbo.fcPendapatanPerPeriode() print @tmp -- 5. (#) Buat function untuk pengkodean member dengan input tanggal dibuat dan gender,format yang dihasilkan P11001 atau L12001, L12022, keterangan : digit 1 adalah gender digit 2,3 adalah angka tahun,digit 4-6 adalah urutan member masuk direset tiaptahun dan gender. create function FcKodeMemberBaru(@tgl datetime,@gd char(1)) returns char(6) begin declare @kdbaru char(6),@th char(2),@urutbaru char(3),@max int set @th= right(year(@tgl),2) select @max=max(right(kodemember,3)) from member where year(tgldibuat)=year(@tgl) and gender=@gd if @max is null set @max=0 set @urutbaru= right('00'+cast(@max+1 as varchar(3)),3) set @kdbaru =@gd +@th+@urutbaru return @kdbaru end -- pemanggilan function langsung select dbo.FcKodeMemberBaru('2011/12/13','L') select dbo.FcKodeMemberBaru('2011/12/13','P') select dbo.FcKodeMemberBaru('2012/11/12','P') -- 6. ($) Buat function untuk menghitung point yang diperoleh -- dari tiap transaksi yang dilakukan oleh member (Ketentuan : 1 point untuk belanja 25000 dan kelipatannya) -- 7. (&) Buat function untuk pengkodean nonota dengan input tanggal, -- format yang dihasilkan 1110110001, -- keterangan : digit 1,2 adalah angka tahun, digit 3,4 adalah angka bulan, -- digit 5,6 adalah angka tanggal digit 7-10 adalah urutan transaksi direset setiap ganti tanggal

Anda mungkin juga menyukai