我已经使用Insight.Database大约一年来调用存储过程,但我只是遇到了这样一种情况,即存储过程有一个可默认为空的参数,而 Insight 没有按我的预期处理。
简而言之,参数定义为paramName nvarchar(10) = ''
。调用此过程的代码是老式的 SqlCommand/SqlParam 代码,根本没有设置参数。我用 .net 对象替换它:
Class MyObject
Public Property paramName As String
....
End Class
假设您创建了一个这种类型的对象,不要设置paramName
并将其传递给 proc。我原以为 proc 会使用默认值。但是发生的事情是 Insight 向 proc 发送了一个 NULL 值,这与不发送任何内容不同,proc 看到指定的参数,因此不使用默认值,而这个特定的 proc 实际处理的 NULL 是不同于默认的方式,它破坏了应用程序。
我认为该错误存在于 proc 中,但我仍然需要一种方法来控制可为空的参数行为,以便我可以调用这种我无法修改的 procs。