【存储过程】定义的参数必须都得实现么?
来源:百度知道 编辑: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',但未提供该参数
请问我这样的写法不可以么?存储过程中已经根据条件做了选择,为什么出错呢?是不是存储过程中所有定义的参数,都需要利用上呢?
后台根据条件向存储过程中传入了几个参数
比如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',但未提供该参数
请问我这样的写法不可以么?存储过程中已经根据条件做了选择,为什么出错呢?是不是存储过程中所有定义的参数,都需要利用上呢?
定义了参数 你如果不想在调用的时候 赋值 你可以给个初始值,
每个参数必须被赋值 才能使用。
不赋值等于什么内容都没有,当然会出错
如果里面的赋了初值就可以不给值了。
没有赋初值的 调用的时候就必须要给值。