Sql server 通用代码!?!

Sql server 通用代码!?!,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有很多限制-测试如下所示: Lastname的测试不为空 AddressLine1的测试不为空 就像这样。我的问题是,我能不能概括一下这些测试,这样我就不用写几乎相同的200遍了?将其放入程序或其他程序中?这些测试的意义是什么?验证约束是否存在不是更容易吗?这些测试的重点是使用“我的约束”。您应该验证列不允许null,这可以通过检查系统视图来验证。测试SQL Server是否会禁止在不允许null的列中插入null是没有意义的,除非您是SQL Server开发团队的成员。我认为您不应该这样做,

我有很多限制-测试如下所示:

Lastname的测试不为空

AddressLine1的测试不为空


就像这样。我的问题是,我能不能概括一下这些测试,这样我就不用写几乎相同的200遍了?将其放入程序或其他程序中?

这些测试的意义是什么?验证约束是否存在不是更容易吗?这些测试的重点是使用“我的约束”。您应该验证列不允许null,这可以通过检查系统视图来验证。测试SQL Server是否会禁止在不允许null的列中插入null是没有意义的,除非您是SQL Server开发团队的成员。我认为您不应该这样做,那么我不会花任何时间考虑这一点。SELECT的方法可以从sys.columns(其中object_id=object_id'Person.Person'和name='Lastname'进行参数化,并且可以简单地进行泛型。我将以c形式动态生成整个SQL bloc?一次执行的代码。不是动态SQL,而是获得完整解析器处理的SQL。如果解析器对您不重要,那么您可以使用DynamicSQL。上面的测试看起来像动态sql表中的4条记录,带有简单的字符串替换。我假设您将此视为一个可重复的测试套件—这是许多测试之一。如果测试仅仅是DDL测试,我会考虑放弃另一个解决方案的测试套件,或者把它推到应用层,就像调用应用程序的真正AddiZip API。这些测试的要点是什么?验证约束是否存在不是更容易吗?这些测试的重点是使用“我的约束”。您应该验证列不允许null,这可以通过检查系统视图来验证。测试SQL Server是否会禁止在不允许null的列中插入null是没有意义的,除非您是SQL Server开发团队的成员。我认为您不应该这样做,那么我不会花任何时间考虑这一点。SELECT的方法可以从sys.columns(其中object_id=object_id'Person.Person'和name='Lastname'进行参数化,并且可以简单地进行泛型。我将以c形式动态生成整个SQL bloc?一次执行的代码。不是动态SQL,而是获得完整解析器处理的SQL。如果解析器对您不重要,那么您可以使用DynamicSQL。上面的测试看起来像动态sql表中的4条记录,带有简单的字符串替换。我假设您将此视为一个可重复的测试套件—这是许多测试之一。如果测试只是DDL测试,我会考虑放弃另一个解决方案的测试套件,或者把它推到应用层,就像调用应用程序的真正AddiZip API一样。
BEGIN TRY    
  set @TEST_TEXT = 'insert into Person.Person lastname = NULL- Expect ERROR_NULL_CONSTRAINT_VIOLATION';
  select @PostalCode = max(dbo.PostalCodeCity.PostalCode) +1 from dbo.PostalCodeCity; -- Generate new valid postal code
  insert into Person.Person (Firstname, Lastname, AddressLine1, PostalCode) values ('Jens', null, 'Møgelbjergvej 34', @PostalCode)
  insert into @TestResults values(1, @TEST_TEXT)
END TRY  
BEGIN CATCH  
  insert into @TestResults values(case when ERROR_NUMBER() = @ERROR_NULL_CONSTRAINT_VIOLATION then 0 else 1 end, @TEST_TEXT)
  if ERROR_NUMBER() != @ERROR_NULL_CONSTRAINT_VIOLATION 
    exec usp_GetErrorInfo
END CATCH;   
BEGIN TRY    
  set @TEST_TEXT = 'insert into Person.Person AddressLine1 = NULL- Expect ERROR_NULL_CONSTRAINT_VIOLATION';
  select @PostalCode = max(dbo.PostalCodeCity.PostalCode) +1 from dbo.PostalCodeCity; -- Generate new valid postal code
  insert into Person.Person (Firstname, Lastname, AddressLine1, PostalCode) values ('Jens', 'Borrisholt', null, @PostalCode)
  insert into @TestResults values(1, @TEST_TEXT)
END TRY  
BEGIN CATCH  
  insert into @TestResults values(case when ERROR_NUMBER() = @ERROR_NULL_CONSTRAINT_VIOLATION then 0 else 1 end, @TEST_TEXT)
  if ERROR_NUMBER() != @ERROR_NULL_CONSTRAINT_VIOLATION 
    exec usp_GetErrorInfo
END CATCH;