【存储过程】定义的参数必须都得实现么?

来源:百度知道 编辑:UC知道 时间:2024/05/31 12:27:00
问一个比较繁琐的问题

后台根据条件向存储过程中传入了几个参数

比如if(成立)
向存储过程中传递@a @c

(不成立)
向存储过程中传递@b @c

存储过程中@a @b @c三个参数都定义了

当执行存储过程的时候根据@c有无值来判断执行哪个参数
例子:

@a char(5),@b char(5), @c char(5)

as

if(@c='1') --如果@c中的值等于1 执行@a参数的存储过程
begin
select * from table where cell=@a
end

else --如果@c中的值不等于1 执行@b参数的存储过程
select * from table where cell=@b
end

现在的问题是,执行了@c=1的时候 提示错误 需要参数 '@b',但未提供该参数

如果执行@c!=1的时候 提示错误 需要参数 '@a',但未提供该参数

请问我这样的写法不可以么?存储过程中已经根据条件做了选择,为什么出错呢?是不是存储过程中所有定义的参数,都需要利用上呢?

定义了参数 你如果不想在调用的时候 赋值 你可以给个初始值,
每个参数必须被赋值 才能使用。
不赋值等于什么内容都没有,当然会出错

如果里面的赋了初值就可以不给值了。
没有赋初值的 调用的时候就必须要给值。