为什么delphi中执行存储过程遇到错误就不能返回数据呢?而在查询分析器就可以

举例说明:table:t_test,只有一个字段,并做了唯一索引sql的存储过程是:insertintot_testvalues('adfadf')select@@err... 举例说明:
table: t_test, 只有一个字段,并做了唯一索引
sql的存储过程是:
insert into t_test values('adfadf')
select @@error

执行第一次没有问题,返回了0,执行第二次时出错,关键索引冲突,但如果这个过程在查询分析器中执行,出错后能返回@@error值,而delphi中执行出错后adoquery.active就始终是false,也就是不能取得@@error,因为存储过程中出错是在预料中的,所以出错的语句本身不存在问题,这应该怎么处理呢?
我直接怀疑是什么人推荐的或者是有什么功能推荐的,明白答案和我的问题都不相干,居然也推荐了,不只这一个,其它很多问题都是这样
展开
 我来答
抹布工程
2012-08-15 · TA获得超过163个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:135万
展开全部
你是不是设置了主键啊 主键重复了吧,你可以SELECT 看下你插入的数据是不是有重复,而且插入的值为主键
追问
麻烦你看清楚,是我故意出错的,我要的是在出错后能以select的方式返回我要的数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HJ_3000
2012-08-16 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:50.9万
展开全部
方法1
在存储过程里使用Try语句。
方法2
用TADOStoredProc,SQL语句使用Out参数返回错误代码 如:RETURN @@error

Delphi绝对能解决你的问题,不明白的hi我。
追问
sql2000 里我试了try,好像不认begin try end try begin catch end catch
我这里的问题是返回@@error,但这只是我举的一个例子,实际上我是要返回一个表,所以我认为必需要用select返回,不知道在存储过程里是不是可以不理会出错的信息,也就是在delphi里看不到这个过程的错误,最多是没有返回记录
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
景茹炜L8
2012-08-15 · TA获得超过481个赞
知道小有建树答主
回答量:617
采纳率:0%
帮助的人:375万
展开全部
用异常处理。
Try
......
except
on 错误类型
do 返回错误时,你想进行的操作,比如返回数据、异常信息等。

end;
更多追问追答
追问
不对,这是adoquery.active是false,没办法做任何处理,我需要在存储过程中一次完成这些操作
追答
那就简单了。
先是你的语句
ADOQuery1.Open;
然后再测试ADOQuery1.Active:
if not ADOQuery1.Active then ......你需要的操作在这儿写
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式