Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 server 2005 SQLServer2005中的数据验证存储过程_Sql Server 2005_Stored Procedures_Validation - Fatal编程技术网

Sql server 2005 SQLServer2005中的数据验证存储过程

Sql server 2005 SQLServer2005中的数据验证存储过程,sql-server-2005,stored-procedures,validation,Sql Server 2005,Stored Procedures,Validation,我希望在存储过程参数中获取出生日期值,并验证/过滤它是否在1910年之后以及当前年份-18年。如果不是,则我希望传递/插入空值。这是我未经任何验证的存储过程: ALTER PROCEDURE [dbo].[CARS_IS_WU_T_INSERT]( @DOB [DATETIME], @SSN [VARCHAR](9), @O

我希望在存储过程参数中获取出生日期值,并验证/过滤它是否在1910年之后以及当前年份-18年。如果不是,则我希望传递/插入空值。这是我未经任何验证的存储过程:

ALTER PROCEDURE [dbo].[CARS_IS_WU_T_INSERT](


           @DOB                           [DATETIME],
           @SSN                           [VARCHAR](9),
           @OCCUPATION                    [VARCHAR](30),
           @PLACE_OF_ISSUANCE             [VARCHAR](30),
           @Exception_Bit                 [BIT])
AS
INSERT INTO [DBO].[UA_T]
         (
          [DOB],
          [SSN],
          [OCCUPATION],
          [PLACE_OF_ISSUANCE],
          [EXCEPTION_BIT])
  VALUES     (
  @DOB,
          @SSN,
          @OCCUPATION,
          @PLACE_OF_ISSUANCE,
          @Exception_Bit)

您可以这样定义函数
CheckDate

CREATE FUNCTION [dbo].[CheckDate]
(
    @DOB datetime
)
RETURNS datetime
AS
BEGIN

    return case 
    when 
        ( 
            (@DOB >  CONVERT(datetime, '19100101', 102))
            and
            @DOB <  DATEADD(yyyy, -18, getdate())
        )
        then @DOB 
        else null
    end
END
注意:从您的回答中,我不明白您是否希望为18岁以上或18岁以下的人设置null。对于18岁以下的人,此函数返回null。如果您希望以另一种方式进行更改,只需在以下条件下更改:
@DOB

INSERT INTO [DBO].[UA_T]
     (
      [DOB],
      [SSN],
      [OCCUPATION],
      [PLACE_OF_ISSUANCE],
      [EXCEPTION_BIT])
VALUES     (
      [dbo].[CheckDate](@DOB),
      @SSN,
      @OCCUPATION,
      @PLACE_OF_ISSUANCE,
      @Exception_Bit)