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
Post a Comment