怎么截获SQL错误!?

wolftomb 2006-07-30 09:35:34
产品的ID关联别的表,我在对产品进行操作的时候呢,没有关联的是允许删除,有关联的如下:

服务器: 消息 547,级别 16,状态 1,行 1
DELETE 语句与 COLUMN REFERENCE 约束 'FK_ORDER_ITEMS_PRODUCTS' 冲突。该冲突发生于数据库 'TEST',表 'ORDERS_ITEMS', column 'ProductID'。
语句已终止。

这样的情况下想返回一个值,而不是这样错误!

...全文
124 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2006-07-30
  • 打赏
  • 举报
回复
查询分析器不允许 return 带参数

存储过程的话, 2000无法屏蔽掉错误提示
wolftomb 2006-07-30
  • 打赏
  • 举报
回复
SQL2000 在查询分析期里面或者过程里面好象都不行! 是不是我搞错了!?
分析器里面
Delete Products Where ID = 1233
IF @@ERROR <>0
BEGIN
RETURN(99)
END
服务器: 消息 178,级别 15,状态 1,行 5
在此上下文中不能使用带有返回值的 RETURN 语句。

过程里面
CREATE PROCEDURE dbo.sp_error AS
Delete Products Where ID = 1233
if @@ERROR <>0
BEGIN
return(99)
END
GO
exec sp_error
服务器: 消息 547,级别 16,状态 1,过程 sp_error,行 3
DELETE 语句与 COLUMN REFERENCE 约束 'FK_ORDER_ITEMS_MASTER_SERIAL' 冲突。该冲突发生于数据库 'V-ONE',表 'ORDERS_ITEMS', column 'ProductID'。
语句已终止。
zjcxc 元老 2006-07-30
  • 打赏
  • 举报
回复
--2000用@@ERROR

DELETE .... -- 删除
IF @@ERROR <>0
BEGIN
RETURN .... -- 返回
END
liangpei2008 2006-07-30
  • 打赏
  • 举报
回复
在前端应用程序中捕获
--例:Delphi
try
...
except
on E: Exception do ErrorDialog(E.Message, E.HelpContext);
end;
zjcxc 元老 2006-07-30
  • 打赏
  • 举报
回复
--2005用 try catch就可以了
BEGIN TRY
DELETE .... -- 删除
END TRY
BEGIN CATCH
RETURN .... -- 返回
END CATCH
昵称被占用了 2006-07-30
  • 打赏
  • 举报
回复
看看@@error的说明

34,588

社区成员

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

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