我创建了DELPHI数据库应用程序,它将使用DBX TSQLConnection组件连接到Oracle 数据库(19c 版本)。我收到访问冲突错误,当我调用oracle listagg 函数时(SQLQuery1.open --in 这一行)。
当我调试时,我在下面的目标文件中得到了错误,
文件名: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
帮我解决这个问题。