试:
create proc p1(@a varchar(1))
as
declare @out int
begin tran t1
exec p2 @a -----------------一个用了insert into的存储过程
exec p3 @a,@out output--------一个用了update 的存储过程
-------如果不执行p3,则可以得到get_recordcount()=1
-------如果执行p2,则get_recordcount()=-1
------百思不得其解,附p3大致过程见后,请大侠帮忙
if(@out<>0) ??????为什么判为0,0是没有UPDATE记录的。
begin
commit tran t1
set =1,msg='ok'
end
else ??????为什么判不为0,如1是UPDATE了一条记录的。但ROLLBACK了,就没有数据集了。
begin
rollback tran t1
set =0,msg='error'
end
create proc p3 (@a varchar(1),@out int output) as
set nocount off
if(@a='1')
update table set .......
else
update table set .......
set @out = @@rowcount
return
create proc p1(@a varchar(1))
as
declare @out int
begin tran t1
exec p2 @a -----------------一个用了insert into的存储过程
exec p3 @a,@out output--------一个用了update 的存储过程
-------如果不执行p3,则可以得到get_recordcount()=1
-------如果执行p2,则get_recordcount()=-1
------百思不得其解,附p3大致过程见后,请大侠帮忙
if(@out<>0) ??????为什么判为0,0是没有UPDATE记录的。
begin
commit tran t1
set =1,msg='ok'
end
else ??????为什么判不为0,如1是UPDATE了一条记录的。但ROLLBACK了,就没有数据集了。
begin
rollback tran t1
set =0,msg='error'
end
create proc p3 (@a varchar(1),@out int output) as
set nocount off
if(@a='1')
update table set .......
else
update table set .......
set @out = @@rowcount
return
if(@out<>0) 这里的判断是不是为0是我人为定义的,我在存储过程内部内义的,符合条件并执行了相应操作的才是0实际上按蚂蚁说的,定义两个变量@Mark,@Message
最后select Mark=@,Message=@message
这样就可以正确地提示有结果集返回,真不知道为什么
select Mark=0,Message='error'
这样不能正确地返回?(执行存储过程能返回,但是在程序中调用的时候不能返回,,,郁闷
既使我按上面所述,定义两个变量@Mark,@Message
最后select Mark=@,Message=@message
这样就可以正确地提示有结果集返回
但是调用的存储过程不一样结果还是不一样
如果仅调用insert into类型的存储过程的话结果正确
但是如果存储过程中含用update之类的语句的话结果又不正确了狂晕................................................