在用.net调用oracle存储过程修改数据的时候,此存储过程的基本结构如下
假设存在两个输入参数V_USERID,V_USERNAME
在存储过程中声明了rowcount为number
于是写大代码如下
select rowcount=count(*) from user where username=V_USERNAME
if(rowcount<=0)
begin
update.......
end但if条件不满足的话,实际上不会执行update,但是,当用.net调用这样的一个存储过程的时候,最后ExuteNoQuery方法返回的是1,不管if条件满足不满足。
在sql server中不会这样。
难道oracle中需要弄一个输出参数来判断是否修改成功?
假设存在两个输入参数V_USERID,V_USERNAME
在存储过程中声明了rowcount为number
于是写大代码如下
select rowcount=count(*) from user where username=V_USERNAME
if(rowcount<=0)
begin
update.......
end但if条件不满足的话,实际上不会执行update,但是,当用.net调用这样的一个存储过程的时候,最后ExuteNoQuery方法返回的是1,不管if条件满足不满足。
在sql server中不会这样。
难道oracle中需要弄一个输出参数来判断是否修改成功?
select rowcount=count(*) from user where username=V_USERNAME //这里已经是有一行记录了,if(rowcount <=0)
begin
update....... //如果有的话,他有cover上面的,
end 所以你始终返回的都有1
if exists(select top 1 id from user where username=@username) 有记录的话,则执行
begin
update.....
end