为什么要这么做,有什么好处?!!:(

skyboy0720 2004-05-14 03:08:32
create proc p_cc
as
begin tran
insert into cc select 'asdf','adsf'
if @@error<>0
raiserror('操作失败!',16,1) with log
rollback
commit tran

调用:exec p_cc

我CC里的第2个字段是INT,这时候肯定会失败,我看到的不是“操作失败”这句话
怎么会事,raiserror()是在哪显示我的出错信息,我一直没搞懂,还有就是
很多存储过程都会有这么一句"set nocount on"
这样是什么意思,有什么好处,体现在哪!谢谢!请教!
...全文
81 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyboy0720 2004-09-02
  • 打赏
  • 举报
回复
呵呵,wanyingsong(豌豆) ,你真是搜了我一遍啊,
haoK 2004-09-02
  • 打赏
  • 举报
回复
是有点奇怪

create table testTable(a int)

insert into testTable(9999999999999999999999999999999999999999999)
select @@error

这样执行,报错:整数溢出,但继续执行下面的select, 会返回错误号!

但是
insert into testTable('adsf')
select @@error
这样执行,报错:类型转换错误,但是不再往下执行了!!!!

比较两次的错误,严重级别都是16,按照《联机丛书》上说得,级别>=20时,才会中断进程。
这样的话,第二次执行的结果就有点奇怪了!

望高手解惑。。。。
老宛 2004-09-02
  • 打赏
  • 举报
回复
呵呵,我来捡分,raiserror的结果,如果你在查询分析器里面执行的话,会在“消息”里面显示。如果在应用程序里面执行,会弹出一个messagebox

create proc p_cc
as
raiserror('操作失败!',16,1) with log

go
exec p_cc
go
drop procedure p_cc
hmily1688 2004-05-14
  • 打赏
  • 举报
回复
Sorry ,我错了,不是弹出一个窗体,是错误 处理
如:
raiserror('creating Department...',0,1)
skyboy0720 2004-05-14
  • 打赏
  • 举报
回复
怎么没人,要沉了!
skyboy0720 2004-05-14
  • 打赏
  • 举报
回复
raiserror是弹出一个窗体??
不是吧,应该是错误处理,怎么会和窗体联系起来了,我主要是想怎么体现它的用法,举个例子
请教!!
hmily1688 2004-05-14
  • 打赏
  • 举报
回复
set nocount off 一般用在触发器中或存储过程中,不显示输出项,如.. rows affected)
hmily1688 2004-05-14
  • 打赏
  • 举报
回复
raiserror是弹出一个窗体,就是做程序时第一个程序hello world哪样的弹出窗体

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧