oracle-Delphi使用ADO编程时候报错,急求解释

问题描述

Delphi使用ADO编程时候报错,急求解释 1C
Delphi使用ADO进行数据库编程时,执行SQL会报错,下面是详细的说明

有三种方式拼接SQL

**方式1会报错**:ORA-00937: not a single-group group function    adoquery.Close;    adoquery.SQL.Text := 'select count(*) icount from testtable where testno = :no  and testname = :name ';    adoquery.Parameters.ParamByName('no').Value := Number;    adoquery.Parameters.ParamByName('name').Value := Name;    adoquery.Open;    adoquery.First;    Result := adoquery.FieldByName('icount').AsInteger ;**方式2可以执行**    adoquery.Close;    adoquery.SQL.Text := Format('select count(*) icount from testtable where testno = ''%s'' and testname = ''%s'' ' [Number Name]);    adoquery.Open;    adoquery.First;    Result := adoquery.FieldByName('icount').AsInteger ;**方式3可以执行**    adoquery.Close;    adoquery.SQL.Text := 'select * from ( select count(*) from testtable where testno = :no and testname = :name )';    adoquery.Parameters.ParamByName('no').Value := Number;    adoquery.Parameters.ParamByName('name').Value := Name;    adoquery.Open;    adoquery.First;    Result := adoquery.Fields[0].AsVariant

补充说明:

第一种报错的SQL方式是在MSDAORA.1驱动下报错,但是使用OraOLEDB.Oracle.1驱动可以

到底是为什么

解决方案

sqlserver 链接oracle可以通过两个访问接口:“MSDAORA” 和“OraOLEDB.Oracle”

1、“MSDAORA”访问接口是由Microsoft OLE DB Provider for Oracle提供的。通过该访问接口建立的链接服务器在进行查询oracle表(带数据类型CLOB、BLOB字段)时会报错。

2、“OraOLEDB.Oracle” 访问接口是由oracle 的Oracle Probider for OLE DB 驱动提供的。它解决了两个数据库类型不一致的的问题。而且如果需要使用分布式事务,必须使用它来创建链接服务器。

二者在使用上,有些语法不一样。建议使用oracle厂商的原版驱动吧。

解决方案二:
你的sql没有什么问题,应该是驱动的问题。

解决方案三:
http://blog.csdn.net/eagletian/article/details/18621

时间: 2024-09-20 16:14:52

oracle-Delphi使用ADO编程时候报错,急求解释的相关文章

页面jquery提示报错 急求大神解决

问题描述 页面jquery提示报错 急求大神解决 TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement. 解决方案 检查下jquery提交的代码,看看是否有未定义的变量. 相同问题参考:http://www.07net01.com/2015/08/902494.html 解决方案二: 页面中使用已经引入的jquery插件,结果却提示JS报错找不到函数[问题解决] 解决方

c++-在codeblocks上成功编译的代码放到VS2010上各种报错急求解决

问题描述 在codeblocks上成功编译的代码放到VS2010上各种报错急求解决 代码在网盘里,求大神解决谢谢了http://pan.baidu.com/s/1hqeUza8 解决方案 哥们你不厚道啊,container.h呢,发全了啊. 解决方案二: 我改好了,文件怎么给你?

jdk-JSP placeholder=""不明原因的报错问题求解释

问题描述 JSP placeholder=""不明原因的报错问题求解释 问题代码: <div class="form-group"> <label class="control-label">备注</label> <form:textarea path="remarks" htmlEscape="false" class="form-control&quo

android studio-Android studio编程这个报错怎么解决

问题描述 Android studio编程这个报错怎么解决 Error:Could not run build action using Gradle installation 'D:Program FilesAndroidAndroid Studiogradlegradle-2.4'. 这个报错怎么解决? 解决方案 android studio编译报错---------------------- 解决方案二: 貌似gradle版本问题,看你工程设置中设置的路径和版本对应吗 解决方案三: htt

matlab-vs 2010 跟MATLAB混合编程老报错

问题描述 vs 2010 跟MATLAB混合编程老报错 执行到MATLAB函数时软件会报错:Precision Design.exe 中的 0x758f812f 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0e79f60c 处的 mwException. 并且在MATLAB函数处中断 我用的方法是dll文件混合编程的,然后我单步执行时会出现这样的情况:无可用源 解决方案 参考:http://blog.csdn.net/wangyaninglm/article/deta

delphi调用HttpQueryInfo函数编译报错,说参数类型不符合

问题描述 delphi调用HttpQueryInfo函数编译报错,说参数类型不符合 procedure Get(url,heads: string;res: TStream); var hInt,hUrl:HINTERNET; buffer:PChar; dwRead:cardinal; hBuf:PChar; flag:Boolean; len,index:Integer; var value: DWORD; begin GetMem(buffer, 65536); GetMem(hBuf,

http协议系统之间交互,出现的编程的报错。我该怎样修改?求大神啊

问题描述 http协议系统之间交互,出现的编程的报错.我该怎样修改?求大神啊 现在我们系统跟gps之间交互,我采用的httpClient,可是每次跑程序的时候都会报错 java.net.SocketException: Software caused connection abort: recv failed at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Un

c#调用delphi编写的dll文件报错,尝试读取或写入受保护的内存

问题描述 c#调用delphi编写的dll文件报错,尝试读取或写入受保护的内存 delphi函数原型 Procedure invoke(params :PChar; result : PChar) ; 解决方案 把这个delphi的原型改一下,改为 Function Pchar invoke(params :PChar) ; 再试试 解决方案二: Function invoke(params: PAnsiChar): PAnsiChar ;

java代码编程报错,求原因。

问题描述 java代码编程报错,求原因. 把第5行代码改为Outer2 a = new Outer2() ;程序报错:Exception in thread "main" java.lang.StackOverflowError:在本类中要实例化该对象,必须使用this替代吗? package comm.test; class Outer2 { private String title="HELLo world"; Outer2 a = this; //第5行 pu