这是我想要做的:
给定一张桌子
PeopleOutfit (id int primary key, boots int, hat int)
和一个存储过程
UpdateOutfit @id int, @newBoots int = null, @newHat = null
有没有办法判断我是否将此程序称为
exec UpdateOutfit @id=1, @newBoots=null, @newHat=5
有效地告诉 id 为 1 的人现在必须赤脚并戴上第五顶帽子
exec UpdateOutfit @id=1, @newHat=5
指示这个人戴上第五顶帽子,保持他现在的靴子?
换句话说,我想(在存储过程中)告诉(在存储过程中)是否“使用了默认值,因为它没有被指定”,来自“我明确地调用了这个过程,传递了恰好与默认值相同的值”。
我知道有几种方法可以完成我想做的事情,例如传递 XML 或正在更新的字段的位掩码,但目前我只想确定这种确切的技术是否可行。
编辑:传递保留值不适用于具有小范围类型的字段,例如位。重载过程也是一个不可接受的选项。创建使用附加“NotAValue”值扩展 NULL 范式的用户定义类型可能是一个答案,但我需要更多关于如何实现它的指导。