首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB 调用SQL2000 存储过程错误捕获

2012-02-05 
VB 调用SQL2000 存储过程异常捕获VB codePrivate Sub Command1_Click()Dim cmd As New ADODB.CommandDim s

VB 调用SQL2000 存储过程异常捕获

VB code
Private Sub Command1_Click()    Dim cmd As New ADODB.Command    Dim sql As String    sql = "SP_INSERT"    cmd.ActiveConnection = g_conn    cmd.CommandType = adCmdStoredProc    cmd.CommandText = sql    cmd.Execute    Set cmd = NothingEnd Sub


SQL code
CREATE PROCEDURE SP_INSERT ASINSERT INTO t_A SELECT 'a' --t_A正常可以插入INSERT INTO t_B SELECT 'a' --t_B不存在 应该报错的


执行结果VB没有报错,有什么办法抛出异常

[解决办法]
应该在存储过程中处理错误,VB中取返回值....
[解决办法]
给你个例子
CREATE OR REPLACE PROCEDURE "ZZ_TMP" (SMsg in string)
as
ERROR_MSG VARCHAR2(200);

BEGIN
--添加业务代码
......
COMMIT;
-- 出错处理
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
ERROR_MSG := SUBSTR(SQLERRM,1,150);
SMsg := SUBSTR(SQLERRM,1,150);
INSERT INTO TM_ERROR_INFO VALUES('ZZ_TMP',SYSDATE,ERROR_MSG);
END;

[解决办法]
探讨

on error resume next 我没用

如果没有
SQL code

INSERT INTO t_A SELECT 'a' --t_A正常可以插入


VB就会出错,如果第一句有正常执行,第二句的插入虽然有错误,VB就不报错误了!

您可以试验一下。
如果这样的话,VB用起来是很危险的

[解决办法]
你可以多尝试几种语言试试,有时候靠大腿都能想明白的事
[解决办法]
这个问题和编程语言无关,程序都是通过数据库引擎访问数据库的,你引用的是ADO,这应该和ADO相关....
只能说,存储过程中没有错误处理,用起来是很危险的...
存储过程,很高效的东西,可想说爱你不容易...我写系统从来不用

热点排行