zoukankan      html  css  js  c++  java
  • 一个跨月请假单据判断触发器

     1 use hrmis
     2 set ANSI_NULLS ON
     3 set QUOTED_IDENTIFIER ON
     4 GO
     5 Alter Trigger [dbo].[Tg_k20_month] on [dbo].[k20]
     6 FOR insert,update
     7 AS
     8 if(update(k2006)) or (update(k2007))
     9 BEGIN
    10  declare @msg nvarchar(80), @begTIme datetime, @endTime datetime;
    11  declare @Year int, @Month int;
    12  --获取请假的年份及月份
    13  select @Year = Year(k2006),
    14      @Month = Case
    15       When Day(k2006) > 25 Then Month(k2006)+1
    16       else Month(k2006)
    17      End
    18  From Inserted;
    19  --计算请假单据的开始时间所在的月份
    20  Select @endTime = Case
    21       When @Month < 10 Then Convert(varchar(4),@Year)+'0'+Convert(varchar(1),@Month)+'25'
    22       else Convert(datetime, Convert(varchar(4),@Year)+Convert(varchar(1),@Month)+'25')
    23        End
    24 --     ,@begTime = Case
    25 --      When @Month < 11 Then Convert(varchar(4),@Year)+'0'+Convert(varchar(1),@Month-1)+'26'
    26 --      else Convert(varchar(4),@Year)+Convert(varchar(1),@Month-1)+'26'
    27 --       End
    28  if exists(Select A0188 From Inserted Where k2007 > @endTime)
    29   Begin
    30    Select @msg=Convert(varchar(5),k2006,110)+''+Convert(varchar(5),k2007,110)+
    31                       '此段时间内有跨月现象,请按月份重新录入!'  from Inserted 
    32    raiserror(@msg,16,1)
    33    rollback transaction 
    34    return
    35   End
    36 End
    37 return


    有一个问题,是后来发现的,上面SQL语句中有一段:

    1 if exists(Select A0188 From Inserted Where k2007 > @endTime)
    2   Begin
    3    Select @msg=Convert(varchar(5),k2006,110)+''+Convert(varchar(5),k2007,110)+
    4                       '此段时间内有跨月现象,请按月份重新录入!'  from Inserted 
    5    raiserror(@msg,16,1)
    6    rollback transaction 
    7    return
    8   End

    其中raiserror(@msg,16,1)
    是抛出一个错误级别为16的异常信息,这个信息能否被C#里的catch语句捕足?具体怎么捕捉?由于今天是在转我QQ空间的资料,所以暂时写一点,日后我看到的话,回来再补回。

  • 相关阅读:
    10查询结果排序
    11汇总和分组数据
    09查询基础
    07修改数据
    08删除数据
    06插入数据
    PHP 判断数组是否为空的5大方法
    Mysql模糊查询like效率,以及更高效的写法
    经典面试题golang实现方式(一)
    php调用c语言编写的so动态库
  • 原文地址:https://www.cnblogs.com/seasons1987/p/2568357.html
Copyright © 2011-2022 走看看