我已经创建了 DELPHI 数据库应用程序,它将使用 DBX TSQLConnection 组件连接到 Oracle数据库(19c版)。 我收到访问冲突错误时,我调用 oracle listagg函数(SQLQuery1.open-在此行中)。
调试后,我在下面的目标文件中得到了错误,
文件名:Data.DBXDynalink.pas
函数:函数TDBXDynalinkReader.DerivedNext:布尔值;
错误行:DBXResult:= FMethodTable.FDBXReader_Next(FReaderHandle);
实际错误:模块'dbxora.dll'中地址04FD6CC2的访问冲突。读取地址00000004
下面是我的代码,
...SQLQuery1 initialization....
SQLQuery1.CommandText := Trim(memoSQLText.Lines.Text); // Assigning query
SQLQuery1.Open; // Exactly on this line i'm getting error
if SQLQuery1.RecordCount > 0 then
....Do something here....
注意:在Oracle 19C(19.3)以下的其他版本中都将执行相同的查询
用于应用程序开发的IDE版本:DELPHI XE3(我也已经在DELPHI 10.1 Berlin上进行了检查)
数据库版本:Oracle 19C(19.3)
复制步骤:
// 1.Execute below queries in order to create testing data ,
create table myuserlist(myuser varchar2(10));
Insert into myuserlist(myuser) values('karthik');
Insert into myuserlist(myuser) values('aarush');
Insert into myuserlist(myuser) values('yuvan');
// 2.Try to open the below mentioned query using TSQLConnection and TSQLQuery
select listagg(a.myuser, ', ') within group (order by a.myuser) as myusernames from myuserlist a
示例项目在GitHub中可用, https://github.com/yuvankarthik/DELPHI-DemoOracleConnect.git
帮助我解决此问题。