【发布时间】:2009-05-07 21:35:57
【问题描述】:
这是我想做的:
给定一张桌子
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 范式可能是一个答案,但我需要更多关于如何实现它的指导。
【问题讨论】:
标签: sql-server stored-procedures parameters default