Update issue in Sql Server stored procedure -


i have little problem in stored procedure, have procedure making update 2 columns procedure:

create procedure [dbo].[p_attendance_checktime1] @emp_id int = null, /*employee source code*/ @trns_typ nvarchar = null,/*transaction type('check in','check out')*/ @trns_ts datetime = null,/*transaction time stamp*/ @out_ts datetime = null,/*attendance out time stamp*/ @in_ts datetime = null,/*attendance in time stamp*/ @emp_srgt  int = null, /*employee surrogate key insert var.*/ @dt_srgt int  = null /*date surrogate key insert var.*/ begin set nocount on; if  @trns_typ in ('check in', 'check out')      begin     select emp_srgt = @emp_srgt          [dbo].[d_employee]          [emp_src_cd] = @emp_id;     select [dt_srgt]= @dt_srgt          d_date          g_dt = replace(convert(varchar(12),@trns_ts,112),'-','');     select [atnd_emp_out_ts] = @out_ts, [atnd_emp_in_ts] = @in_ts          [dbo].[f_attendance]     [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; end; else if @trns_typ = 'check in' , (@in_ts null or @in_ts > @trns_ts  )      begin     update [dbo].[f_attendance]          set [atnd_emp_in_ts] = @trns_ts     ,[atnd_time]=convert(float,replace(left(convert(time,([atnd_emp_out_ts] - @trns_ts),103),5),':','.'))     [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt;     end; else if @trns_typ = 'check out' , (@out_ts null or @out_ts < @trns_ts )      begin      update [dbo].[f_attendance]           set [atnd_emp_out_ts] = @trns_ts      ,[atnd_time] = convert(float,replace(left(convert(time,(@trns_ts - [atnd_emp_in_ts]),103),5),':','.'))      [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; end; print 'there error in these data' end; 

my problem in procedure dose not make update, vision don't see problem in structure, please me in procedure , give me correct syntax

i modify procedure structure

create procedure [dbo].[p_attendance_checktime2] @emp_id int = null, /*employee source code*/ @trns_typ nvarchar = null,/*transaction type('check in','check out')*/ @trns_ts datetime = null,/*transaction time stamp*/ @out_ts datetime = null,/*attendance out time stamp*/ @in_ts datetime = null,/*attendance in time stamp*/ @emp_srgt  int = null, /*employee surrogate key insert var.*/ @dt_srgt int  = null /*date surrogate key insert var.*/ begin set nocount on; select emp_srgt = @emp_srgt [dbo].[d_employee] [emp_src_cd] = @emp_id; select [dt_srgt]= @dt_srgt d_date g_dt = replace(convert(varchar(12),@trns_ts,112),'-',''); select [atnd_emp_out_ts] = @out_ts, [atnd_emp_in_ts] = @in_ts [dbo].[f_attendance] [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; if @trns_typ = 'check in' , (@in_ts null or @in_ts > @trns_ts  )      begin update [dbo].[f_attendance] set [atnd_emp_in_ts] = @trns_ts ,[atnd_time]=convert(float,replace(left(convert(time,([atnd_emp_out_ts] - @trns_ts),103),5),':','.')) [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; end; if @trns_typ = 'check out' , (@out_ts null or @out_ts < @trns_ts )      begin update [dbo].[f_attendance] set [atnd_emp_out_ts] = @trns_ts ,[atnd_time] = convert(float,replace(left(convert(time,(@trns_ts - [atnd_emp_in_ts]),103),5),':','.')) [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; end; print 'there error in these data' end; 

thanks

there no update statements in first if condition why sp not updating anything.

also might want change other 2 else if parts if per business requirement might wrong.

edit: if want assign value variable need keep variable on left hand side of assignment equals.

change following

if  @trns_typ in ('check in', 'check out')  begin     select emp_srgt = @emp_srgt          [dbo].[d_employee]          [emp_src_cd] = @emp_id;     select [dt_srgt]= @dt_srgt          d_date          g_dt = replace(convert(varchar(12),@trns_ts,112),'-','');     select [atnd_emp_out_ts] = @out_ts, [atnd_emp_in_ts] = @in_ts          [dbo].[f_attendance]     [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; end; 

to following

if  @trns_typ in ('check in', 'check out')  begin     select @emp_srgt = emp_srgt          [dbo].[d_employee]          [emp_src_cd] = @emp_id;     select @dt_srgt = [dt_srgt]         d_date          g_dt = replace(convert(varchar(12),@trns_ts,112),'-','');     select @out_ts = [atnd_emp_out_ts], @in_ts = [atnd_emp_in_ts]         [dbo].[f_attendance]     [atnd_emp_srgt] = @emp_srgt , [atnd_dt_srgt] = @dt_srgt; end; 

hope helps.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -