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