我创建了一个接受 3 个参数的存储过程。
@row int
,@column VARCHAR(17)
,@value int
我希望@value
参数接受文本或整数,因为它根据@column
参数更新不同的列。
请指教
我创建了一个接受 3 个参数的存储过程。
@row int
,@column VARCHAR(17)
,@value int
我希望@value
参数接受文本或整数,因为它根据@column
参数更新不同的列。
请指教
不要这样做,创建两个具有不同签名和名称的存储过程。然后您将不需要该@column
参数,并且每个存储过程都将很简单并且行为一致。
您将交换存储过程定义IF
的 s 和CASE
es。过程的查询计划将表现一致,因此可以可靠地缓存,并且您将写入总体上相同的行数。
根据传递的参数执行不同查询的存储过程是一个等待发生的性能问题。
您可以声明 varchar 参数,然后传递 int 并进行强制cast(@value as int)
转换 另一种方法是声明两个参数@value_int
和@value_varchar
但我同意@podiluska - 听起来你有一些设计问题,你确定你真的需要吗?