违反了 UNIQUE KEY

lht0530 2003-08-20 02:14:39
执行程储过程时返的错误如何捕捉,就是什么告诉前台出错了
违反了 UNIQUE KEY 约束 'fk_prod_type'。不能在对象 'product' 中插入重复键。
语句已终止。
...全文
355 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bitfubin 2003-09-05
  • 打赏
  • 举报
回复
delphi:

try
query1.execSQL;
except
on e: Exception do
begin
showmessage('出错' + e.message);
exit;
end;
end;
showmessage('执行成功')
lht0530 2003-08-21
  • 打赏
  • 举报
回复
前台要我返回如错了返回A 对了返回B
pengdali 2003-08-20
  • 打赏
  • 举报
回复
delphi:

try
query1.execSQL;
except
on e: Exception do
begin
showmessage('出错' + e.message);
exit;
end;
end;
showmessage('执行成功')
lht0530 2003-08-20
  • 打赏
  • 举报
回复
提示变量重了  有两个@err
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
那用这个存储过程就行啦

create proc test
@err varchar(255) --返回值,如果无错,就返回'',否则返回错误描述
as
declare @sql varchar(8000),@err int
set @sql='insert into 表 select * from 表 where 编号=''01'''
exec(@sql)
set @err=@@error
if @err<>0
set @err='A'
else
set @err='B'
go
lht0530 2003-08-20
  • 打赏
  • 举报
回复
我要在数据库中得到错误。返回给前台
如错误了返回A没错误返回B
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
如果是在程序中执行语句出错,可以直接拦截错误的.

例如,VB中的错误处理:

sub test()
dim sql$
on error goto lberr
sql="insert into 表 select * from 表 where 编号='01'"
conn.execute sql

exit sub

lberr:
msgbox "错误:" & error()
end sub
zjcxc 2003-08-20
  • 打赏
  • 举报
回复
如果在存储过程中,就用类似下面的存储过程:

create proc test
@err varchar(255) --返回值,如果无错,就返回'',否则返回错误描述
as
declare @sql varchar(8000),@err int
set @sql='insert into 表 select * from 表 where 编号=''01'''
exec(@sql)
set @err=@@error
if @err<>0
select @err=description from master..sysmessages where error=@err
else
set @err=''
go

--调用示例:
declare @err varchar(255)
exec test @err out
print @err
lht0530 2003-08-20
  • 打赏
  • 举报
回复
我是问错误如何捕捉,就是什么告诉前台出错了
CrazyFor 2003-08-20
  • 打赏
  • 举报
回复
主键上插入的值和现有的重复了,
amtyuranus 2003-08-20
  • 打赏
  • 举报
回复
单步执行存储过程啊!!

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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