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