Chinaunix

标题: 存储过程的问题?? [打印本页]

作者: 一只散步的鱼    时间: 2004-12-08 10:24
标题: 存储过程的问题??
declare @errno integer, @errmsg varchar(255)
  if 1>;1
   begin
      select @errno= 30001
      select @errmsg= '此商品不在SPFPCJC中'
      goto error
   end
   else
    begin
     print "ok"
    end
error:
    raiserror  @errno @errmsg
    rollback  transaction

运行上面的语句时,为什么会提示:User error number 0 is invalid. Number must be between 17000 and 2147483647.
我知道提示是给@errno附值为0有错误,但是应该不会有错误提示啊。真是搞不明白!
作者: yuxh    时间: 2004-12-08 10:58
标题: 存储过程的问题??
什么意思啊?明知道不能给errno赋为0,还要这么做,还不允许报错?
为什么成功的时候也执行error:后面的代码?
declare @errno integer, @errmsg varchar(255)
if 1>;1
begin
select @errno= 30001
select @errmsg= '此商品不在SPFPCJC中'
raiserror @errno @errmsg
rollback transaction
return
end
else
begin
print "ok"
end

这样不行吗?
作者: 一只散步的鱼    时间: 2004-12-08 12:28
标题: 存储过程的问题??
原帖由 "yuxh" 发表:
为什么成功的时候也执行error:后面的代码?

这也是我想不通的,成功后应该不会执行error:这个部分!
作者: yuxh    时间: 2004-12-08 13:52
标题: 存储过程的问题??
你又没有return,当然会一直执行下去
作者: 一只散步的鱼    时间: 2004-12-09 11:41
标题: 存储过程的问题??
呵呵,解决了,是我忘记return了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2