Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
indr4w
Starting Member
27 Posts |
Posted - 2013-09-22 : 20:50:02
|
Hello Mr Visakh,how to make a simple stored procedures from the following syntax ?CREATE PROCEDURE [dbo].[kalkulasi_gaji] @tahun char(4), @bulan varchar(15) AS UPDATE PYTGaji SET t_jamsostek=0 where nokpj is NULL AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_jamsostek=0 where (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulan-UPDATE PYTGaji SET t_jamsostek=((upah_hr*30)+t_other)*(1.19/100) where (nokpj is not NULL AND nokpj<>' ') AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_jpk=0.06*(3080000) where status_pph<>'TK' AND (gaji+t_other>4000000) AND (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_jpk=0.03*(3080000) where status_pph='TK' AND (gaji+t_other>4000000) AND (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET t_jpk=0.06*((upah_hr*30)+t_other) where status_pph<>'TK' AND (gaji+t_other<4000000) AND (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET t_jpk=0.03*((upah_hr*30)+t_other) where status_pph='TK' AND (gaji+t_other<4000000) AND (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_jpk=0 where nokpj is NULL AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_jpk=0 where (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_bagian=0 where t_bagian=NULLUPDATE PYTGaji SET t_jabatan=0 where t_jabatan=NULLUPDATE PYTGaji SET t_lain=0 where t_lain=NULLUPDATE PYTGaji SET t_insentif=0 where t_insentif=NULLUPDATE PYTGaji SET t_pendidikan=0 where t_pendidikan=NULLUPDATE PYTGaji SET t_mskerja=0 where t_mskerja=NULLUPDATE PYTGaji SET ulembur=0 where ulembur=NULLUPDATE PYTGaji SET work_period=0 where work_period=NULL UPDATE PYTGaji SET gaji=0 where gaji=NULLUPDATE PYTGaji SET upah_hr=0 where upah_hr=NULLUPDATE PYTGaji SET gaji=upah_hr*hrkerja where jenis_upah='H' AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET upah_hr=gaji/hrkerja where jenis_upah='B' AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET ulembur=((gaji)/173)*tjam_lembur where jenis_upah='H' AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET ulembur=0 where jenis_upah='B' AND tahun=@tahun AND bulan=@bulanGOThank's |
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2013-09-23 : 01:22:06
|
=NULL should be replaced with IS NULLOther than that the code looks fineMadhivananFailing to plan is Planning to fail |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2013-09-23 : 13:51:06
|
why do you need so many update statements? many of them conditions look similar so you can merge them into single statementfor ex:UPDATE PYTGaji SET t_jamsostek=0 where nokpj is NULL AND tahun=@tahun AND bulan=@bulanUPDATE PYTGaji SET t_jamsostek=0 where (nokpj is not null or nokpj<>'') AND tahun=@tahun AND bulan=@bulanis same asUPDATE PYTGaji SET t_jamsostek=0 where tahun=@tahun AND bulan=@bulanas other two conditions are contradictory ones so in effect you can ignore them------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/https://www.facebook.com/VmBlogs |
|
|
indr4w
Starting Member
27 Posts |
Posted - 2014-02-26 : 03:08:55
|
Hello Mr Visakh,My question about the syntax used to simplify the many updates in stored procedures, until now I have not been able solution.Here I include his table (PYTGaji) and stored procedures. tahun char 4 bulan varchar 15 nik varchar 15 nama varchar 40 departemen varchar 30 divisi varchar 30 jabatan varchar 30 norek varchar 20 tmasuk decimal 9 L1 decimal 9 L2 decimal 9 L3 decimal 9 L4 decimal 9 tjam_lembur decimal 13 jenis_upah char 1 ulembur decimal 9 hrkerja decimal 9 upah_hr decimal 9 gaji decimal 9 t_jabatan decimal 9 t_bagian decimal 9 t_mskerja decimal 9 t_lain decimal 9 t_pendidikan decimal 9 t_insentif decimal 9 t_transport decimal 9 t_hadir decimal 9 t_lain1 decimal 9 t_lain2 decimal 9 Rapel decimal 9 t_thr decimal 9 t_meal decimal 9 t_comision decimal 9 t_tax decimal 9 t_tambahanlain decimal 9 p_tmasuk decimal 9 p_koperasi decimal 9 p_punishment decimal 9 p_fungsional decimal 9 p_lain decimal 9 subtotal1 decimal 9 subtotal2 decimal 9 total_diterima decimal 9 jmltunjangan decimal 9 tunjangan_lain decimal 9 premi decimal 9 jpk decimal 9 Bruto decimal 9 Premi_jabatan decimal 9 astek decimal 9 HBulan decimal 9 HTahun decimal 9 PTKP char 5 Batas decimal 9 Kena decimal 9 Akhir decimal 9 status_NPWP char 1 Psl21 decimal 9 P_Tahun decimal 9 Potongan decimal 9 PPH decimal 9 gross1 decimal 9 jbln int 4 tot_deduc decimal 9 nett decimal 9 nett_annualized decimal 9 gross2 decimal 9 non_tax_income decimal 9 taxable decimal 9 income_npwp decimal 9 income_non_npwp decimal 9 income_real decimal 9 tax_payable decimal 9 work_periodB1 char 3 work_periodB2 char 3 work_period int 4 nokpj varchar 30 keterangan varchar 50 Gol_Insentif_Kehadiran char 8 premihadir int 4 haritransport int 4 npwp varchar 30 p_jamsostek decimal 9 TglInput datetime Tuser varchar 20 Status_pegawai varchar 20 memo varchar 50 noperkiraan varchar 30CREATE PROCEDURE [dbo].[kalkulasi_gaji] @tahun char(4), @bulan varchar(15) AS DECLARE @Status_PPH char(3) DECLARE @Status_NPWP char(1) DECLARE @NPWP varchar(30) DECLARE @Tahun1 varchar(4) DECLARE @Bulan1 varchar(10) DECLARE @Batas Decimal DECLARE @Gaji Decimal DECLARE @NominalTransport Decimal DECLARE @KelompokUpah Varchar(20) DECLARE @PremiHadirJabatan Decimal UPDATE PYTGaji SET t_bagian=0 where t_bagian is NULL UPDATE PYTGaji SET t_jabatan=0 where t_jabatan is NULL UPDATE PYTGaji SET t_lain=0 where t_lain is NULL UPDATE PYTGaji SET t_insentif=0 where t_insentif is NULL UPDATE PYTGaji SET t_pendidikan=0 where t_pendidikan is NULL UPDATE PYTGaji SET t_mskerja=0 where t_mskerja is NULL UPDATE PYTGaji SET ulembur=0 where ulembur is NULL UPDATE PYTGaji SET upah_hr=0 where Upah_hr is NULL UPDATE PYTGaji SET Gaji=upah_hr*hrkerja WHERE jenis_upah='H' AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET P_Jamsostek=0.02*((30*upah_hr)+t_jabatan+t_mskerja+t_lain) where upah_hr is Not NULL AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Jmltunjangan=t_jabatan+t_bagian+t_mskerja+t_lain+t_pendidikan, Tunjangan_lain=t_pendidikan WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Astek=0.02*(Gaji+t_jabatan+t_mskerja+t_lain) WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET p_tmasuk=((upah_hr*30) /21)*tmasuk where upah_hr<>0 AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET p_tmasuk=0 where upah_hr=0 AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Subtotal1=gaji-p_tmasuk+t_jabatan+t_mskerja+t_lain+t_pendidikan+t_transport+t_hadir+t_lain1+t_lain2-p_jamsostek+t_bagian where upah_hr is Not NULL AND tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Ulembur=((gaji)/173)*tjam_lembur WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Subtotal2=subtotal1+ulembur+t_tambahanlain-p_lain WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Premi=0.0119*(gaji+jmltunjangan-tunjangan_lain) WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET JPK=0.06*(gaji+t_jabatan+t_mskerja+t_lain) WHERE tahun=@tahun AND bulan=@bulan AND ptkp<>'TK' AND ((gaji+t_jabatan+t_mskerja+t_lain)<4725000) UPDATE PYTGaji SET JPK=0.03*(gaji+t_jabatan+t_mskerja+t_lain) WHERE tahun=@tahun AND bulan=@bulan AND ptkp='TK' AND ((gaji+t_jabatan+t_mskerja+t_lain)<4725000) UPDATE PYTGaji SET JPK=0.06*4725000 WHERE tahun=@tahun AND bulan=@bulan AND ptkp<>'TK' AND ((gaji+t_jabatan+t_mskerja+t_lain)>4725000) UPDATE PYTGaji SET JPK=0.03*4725000 WHERE tahun=@tahun AND bulan=@bulan AND ptkp='TK' AND ((gaji+t_jabatan+t_mskerja+t_lain)>4725000) UPDATE PYTGaji SET Bruto=(Gaji+Jmltunjangan+Premi+JPK+ULembur) WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Premi_Jabatan=Bruto*0.05 WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Hbulan=Bruto-Premi_jabatan-Astek-P_tmasuk WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET HTahun=Hbulan*12 WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Kena=HTahun-Batas WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Akhir=0 WHERE tahun=@tahun AND bulan=@bulan AND Kena<=0 UPDATE PYTGaji SET Akhir=Kena WHERE tahun=@tahun AND bulan=@bulan AND Kena>0 UPDATE PYTGaji SET Psl21=0.06 WHERE tahun=@tahun AND bulan=@bulan AND Status_NPWP='N' UPDATE PYTGaji SET Psl21=0.05 WHERE tahun=@tahun AND bulan=@bulan AND Status_NPWP='Y' UPDATE PYTGaji SET P_Tahun=Psl21*Akhir WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Potongan=P_Tahun/12 WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET PPH=Potongan WHERE tahun=@tahun AND bulan=@bulan UPDATE PYTGaji SET Total_diterima=Subtotal2-PPH-P_Koperasi+Rapel WHERE tahun=@tahun AND bulan=@bulanGOThank you for your attention and answer |
|
|
|
|
|