Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql mp_Srgt?我们不知道您调用此存储过程使用的值是什么,但是如果参数上的注释可信,@Trns\u Typ只能是签入或签出,在这种情况下,如果满足的第一部分,这三条select语句运行,存储过程完成-如果IF,则在的第一部分中不会出现UPDATE。此外,应_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql mp_Srgt?我们不知道您调用此存储过程使用的值是什么,但是如果参数上的注释可信,@Trns\u Typ只能是签入或签出,在这种情况下,如果满足的第一部分,这三条select语句运行,存储过程完成-如果IF,则在的第一部分中不会出现UPDATE。此外,应

Sql mp_Srgt?我们不知道您调用此存储过程使用的值是什么,但是如果参数上的注释可信,@Trns\u Typ只能是签入或签出,在这种情况下,如果满足的第一部分,这三条select语句运行,存储过程完成-如果IF,则在的第一部分中不会出现UPDATE。此外,应,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,mp_Srgt?我们不知道您调用此存储过程使用的值是什么,但是如果参数上的注释可信,@Trns\u Typ只能是签入或签出,在这种情况下,如果满足的第一部分,这三条select语句运行,存储过程完成-如果IF,则在的第一部分中不会出现UPDATE。此外,应避免在存储过程中使用SP_uu前缀-它是为Microsoft的系统过程保留的,并且在发生冲突时,MS one赢了。我从应用程序中通过了@Emp\u Srgt和@Dt\u Srgtationhttp://stackoverflow.com/use


mp_Srgt?我们不知道您调用此存储过程使用的值是什么,但是如果参数上的注释可信,
@Trns\u Typ
只能是
签入
签出
,在这种情况下,如果满足
的第一部分,这三条
select
语句运行,存储过程完成-如果
IF
,则在
的第一部分中不会出现
UPDATE
。此外,应避免在存储过程中使用
SP_uu
前缀-它是为Microsoft的系统过程保留的,并且在发生冲突时,MS one赢了。我从应用程序中通过了@Emp\u Srgt和@Dt\u Srgtationhttp://stackoverflow.com/users/972503/badminI 使用这些select语句填充变量EMP_ID——用户将填充此变量Trns_Typ——此变量onl标志('签入','签出')Trns_TS--这个变量用户将填写它_TS--这个变量用户将填写它_TS--这个变量用户将填写它EMP_Srgt--这个变量它将从应用程序Dt_Srgt中填写--这个变量它将从应用程序中填写你是说Dt_Srgt变量将从数据表中填写,EMP_Srgt变量将从D_EMPLOYEE表中填充?是的,它将首先从这些表填充到表中。如果要为变量赋值,则需要使赋值左侧的变量相等,而不是右侧的变量。检查我的更新答案。在第一个if语句之前打印变量,并检查分配给变量的值是否正确。
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 it into Var.*/
@Dt_Srgt INT  = null /*Date Surrogate Key INsert it into Var.*/
AS
BEGIN
SET NOCOUNT ON;
if  @Trns_Typ in ('Check In', 'Check Out') 
    begin
    select Emp_Srgt = @EMP_Srgt 
        from [dbo].[D_EMPLOYEE] 
        where [EMP_SRC_CD] = @EMP_ID;
    select [DT_SRGT]= @Dt_Srgt 
        from d_date 
        where G_DT = replace(convert(varchar(12),@Trns_TS,112),'-','');
    select [ATND_EMP_OUT_TS] = @OUT_TS, [ATND_EMP_IN_TS] = @IN_TS 
        from [dbo].[F_ATTENDANCE]
    where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
else if @Trns_Typ = 'Check In' and (@IN_TS is 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),':','.'))
    where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
    end;
else if @Trns_Typ = 'Check Out' and (@OUT_TS is 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),':','.'))
     where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
Print 'There Are Error In These Data'
end;
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 it into Var.*/
@Dt_Srgt INT  = null /*Date Surrogate Key INsert it into Var.*/
AS
BEGIN
SET NOCOUNT ON;
select Emp_Srgt = @EMP_Srgt from [dbo].[D_EMPLOYEE] where [EMP_SRC_CD] = @EMP_ID;
select [DT_SRGT]= @Dt_Srgt from d_date where G_DT = replace(convert(varchar(12),@Trns_TS,112),'-','');
select [ATND_EMP_OUT_TS] = @OUT_TS, [ATND_EMP_IN_TS] = @IN_TS from [dbo].[F_ATTENDANCE]
where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
if @Trns_Typ = 'Check In' and (@IN_TS is 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),':','.'))
where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
if @Trns_Typ = 'Check Out' and (@OUT_TS is 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),':','.'))
where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
Print 'There Are Error In These Data'
end;
if  @Trns_Typ in ('Check In', 'Check Out') 
begin
    select Emp_Srgt = @EMP_Srgt 
        from [dbo].[D_EMPLOYEE] 
        where [EMP_SRC_CD] = @EMP_ID;
    select [DT_SRGT]= @Dt_Srgt 
        from d_date 
        where G_DT = replace(convert(varchar(12),@Trns_TS,112),'-','');
    select [ATND_EMP_OUT_TS] = @OUT_TS, [ATND_EMP_IN_TS] = @IN_TS 
        from [dbo].[F_ATTENDANCE]
    where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
if  @Trns_Typ in ('Check In', 'Check Out') 
begin
    select @Emp_Srgt = EMP_Srgt 
        from [dbo].[D_EMPLOYEE] 
        where [EMP_SRC_CD] = @EMP_ID;
    select @DT_SRGT = [Dt_Srgt]
        from d_date 
        where G_DT = replace(convert(varchar(12),@Trns_TS,112),'-','');
    select @OUT_TS = [ATND_EMP_OUT_TS], @IN_TS = [ATND_EMP_IN_TS]
        from [dbo].[F_ATTENDANCE]
    where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
CREATE PROCEDURE [dbo].[P_Attendance_CheckTime]
@EMP_ID INT = null, /*Employee Source Code*/
@Trns_Typ nvarchar(50) = 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 it into Var.*/
@Dt_Srgt INT  = null /*Date Surrogate Key INsert it into Var.*/
AS
BEGIN
SET NOCOUNT ON;
if  @Trns_Typ in ('Check In','Check Out') 
begin
    select @Emp_Srgt = EMP_Srgt 
        from [dbo].[D_EMPLOYEE] 
        where [EMP_SRC_CD] = @EMP_ID;
    select @DT_SRGT = [Dt_Srgt]
        from d_date 
        where G_DT = replace(convert(varchar(12),@Trns_TS,112),'-','');
    select @OUT_TS = [ATND_EMP_OUT_TS], @IN_TS = [ATND_EMP_IN_TS]
        from [dbo].[F_ATTENDANCE]
    where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
if (@Trns_Typ = 'Check In' and (@IN_TS is null or @IN_TS > @Trns_TS  )) 
--or (@Trns_Typ = 'Check Out' and (@OUT_TS is null or @OUT_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),':','.'))
where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
if @Trns_Typ = 'Check Out' and (@OUT_TS is 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),':','.'))
where [ATND_EMP_SRGT] = @EMP_Srgt and [ATND_DT_SRGT] = @Dt_Srgt;
end;
end;