lhzy2015 2015-04-17 06:39 采纳率: 0%
浏览 1723
已结题

SQL2000存储过程错误抓取问题

我程序用的是VB6.0,数据库是SQL2000,
插入一个存储过程
Create PROCEDURE PROC_RdrecordsNoBeff
AS

begin

BEGIN TRANSACTION

delete from systasklog
delete from Mat_sup where PartID=959
if   @@error<>0
BEGIN
    --提示错误  并退出   
    ROLLBACK TRANSACTION
    RAISERROR('资产类物料,单件号不允许为空!',11,1)
    return 1 
END 


COMMIT TRANSACTION

end
GO
比如这样一个存储过程,delete from systasklog这句执行不会出错,
这句delete from Mat_sup where PartID=959执行会出错

在查询分析器我当然可以看到错误信息,
问题来了,我在VB里面如何抓取具体错误信息呢,
我在VB中是这样调用的:
Public Function ExecPROC() As Boolean
On Error GoTo Errcon
Dim Rd As New ADODB.Command

Rd.ActiveConnection = Cn
Rd.CommandText = "PROC_RdrecordsNoBeff"
Rd.CommandType = adCmdStoredProc
Rd.Execute

If Rd.Parameters(0) = 1 Then
ExecPROC = False
Exit Function
End If

ExecPROC = True
Exit Function
Errcon:
MsgBox Err.Description
End Function

请问该如何改动,才能抓取具体错误信息?

  • 写回答

3条回答 默认 最新

  • 232frb 2015-04-17 16:27
    关注

    你不要在程序中抓取错误信息
    你可以这样
    if @@error<>0
    BEGIN
    --提示错误 并退出

    ROLLBACK TRANSACTION
    select 'F' as rel, '资产类物料,单件号不允许为空!' as msg
    return 1
    END
    这样你你的返回值就是一个表 而表中就包含你的错误信息 就不用再程序中捕捉存储过程里面raiseerror的信息了

    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划