以下是我的存储过程调用代码,该存储过程在程序中是循环调用的,第一次执行时都正常,到第二次执行存储过程时就会报错:错误提示为ACCESS violation at address 4DE43404 in module 'SQLOLEDB.DLL' ,read of address 00000018
以下为代码:
proc_addrow.close;
Proc_ADDRow.Parameters.clear;
Proc_AddRow.ProcedureName:='ProcaddRowLong;1';
Proc_ADDRow.Parameters.Refresh;
Proc_AddRow.Prepared:=true;
Proc_AddRow.Parameters.Refresh ;
Proc_AddRow.Parameters.ParamValues['@NewNumid']:=ReturnNewNumid;
Proc_AddRow.Parameters.ParamValues['@AddText']:=s;
Proc_AddRow.Parameters.ParamValues['@LastColumnName']:=LastColumnName;
Proc_AddRow.Parameters[4].Direction:=pdoutput;
Proc_AddRow.ExecProc; //出错地方 LastColumnName:=Proc_AddRow.Parameters.ParamValues['@NewColumnName'];代码到此为止。已经检查的地方:
1\第一次proc_addrow.execproc执行正常,第二次执行到proc_addrow.execproc时就报错。
2\在sql查询分析器里,执行多次执行ProcaddRowLong存储过程都是正常执行的,不会报任何错误,但到dephi中循环调用存储过程就出错了。请帮忙看看
以下为代码:
proc_addrow.close;
Proc_ADDRow.Parameters.clear;
Proc_AddRow.ProcedureName:='ProcaddRowLong;1';
Proc_ADDRow.Parameters.Refresh;
Proc_AddRow.Prepared:=true;
Proc_AddRow.Parameters.Refresh ;
Proc_AddRow.Parameters.ParamValues['@NewNumid']:=ReturnNewNumid;
Proc_AddRow.Parameters.ParamValues['@AddText']:=s;
Proc_AddRow.Parameters.ParamValues['@LastColumnName']:=LastColumnName;
Proc_AddRow.Parameters[4].Direction:=pdoutput;
Proc_AddRow.ExecProc; //出错地方 LastColumnName:=Proc_AddRow.Parameters.ParamValues['@NewColumnName'];代码到此为止。已经检查的地方:
1\第一次proc_addrow.execproc执行正常,第二次执行到proc_addrow.execproc时就报错。
2\在sql查询分析器里,执行多次执行ProcaddRowLong存储过程都是正常执行的,不会报任何错误,但到dephi中循环调用存储过程就出错了。请帮忙看看
解决方案 »
- 求一个sql语句的问题,,合并相同的数据
- 请问一下delphi中uses后的那些东西到底包含了什么?谢谢!
- 请问用delphi如何开com组件,请不吝赐教,有源码例程最好。分不够可以再加。
- 请教各位高手,如何设置DBLOOKUPCOMBOBOX下拉菜单每列的宽度?
- ADO连接的问题,急!
- 大家好,这里有上海的朋友吗?我想到上海去发展,大家帮我出出主意,谢谢!
- 如何解决SocketConnection不能读1条超过20M图片记录的问题?
- 请教邮件发送中不同的级别有什么区别?
- 用DATABASE控件远程连接SQL7.0时如何配置BDE及DATABASE参数?
- 请高手帮忙,用webbrowser编制一个浏览本地网页的浏览器,并且全屏显示
- delphi如何将其它程序界面中的GRID表格中的数据取得或者导出?
- MyDAC控件 用TBlobStream向MYSQL中存图片,为什么会提示乱码?
Proc_ADDRow.Parameters.clear; //这句删掉
Proc_AddRow.ProcedureName:='ProcaddRowLong;1';
Proc_ADDRow.Parameters.Refresh;
Proc_AddRow.Prepared:=true; //这句删掉
Proc_AddRow.Parameters.Refresh ; //这句删掉
Proc_AddRow.Parameters.ParamValues['@NewNumid']:=ReturnNewNumid;
Proc_AddRow.Parameters.ParamValues['@AddText']:=s;
Proc_AddRow.Parameters.ParamValues['@LastColumnName']:=LastColumnName;
Proc_AddRow.Parameters[4].Direction:=pdoutput;
Proc_AddRow.ExecProc; //出错地方
Proc_AddRow.ProcedureName:='ProcaddRowLong;1';
Proc_AddRow.Parameters.ParamValues['@NewNumid']:=ReturnNewNumid;
Proc_AddRow.Parameters.ParamValues['@AddText']:=s;
Proc_AddRow.Parameters.ParamValues['@LastColumnName']:=LastColumnName;
Proc_AddRow.Parameters[4].Direction:=pdoutput;
Proc_AddRow.ExecProc; //出错地方