I have found a bug with either ODAC or the Oracle client that occurrs only in 64 bit applications.
I am using Delphi XE2, ODAC 8.2.8, 64 bit Windows 7, Oracle 11.2 client and server.
Below is a script to create a few object types and the table, and insert the rows. When I try a "select * from the gr_accounts" using a TSmartQuery attached to a TDBGrid, it works fine when compiled in 32 bit. All properties of TSmartQuery and TOraSession are default values (except username, password and server, of course!). When compiled in 64 bit I get "Access violation at address ..... in module 'orageneric11.dll.' Read of address FFFFFFFFFFFFFFFF" If you don't get the error right away, scroll the grid to the right.
I think this will be easy for you to reproduce. If there is a simple code change I can make to fix it, please let me know.
Thanks,
-John
Code: Select all
CREATE OR REPLACE type GR_ADDR
AS OBJECT (
matchcode varchar2(16),
firmname varchar2(512),
addrline varchar2(512),
addrline2 varchar2(512),
city varchar2(512),
state varchar2(512),
zip varchar2(5),
zip4 varchar2(4),
lastline varchar2(512),
county varchar2(32),
block varchar2(32),
loccode varchar2(16),
cart varchar2(16),
dpbc varchar2(16),
lotcode varchar2(16),
lotnum varchar2(16)
);
/
CREATE OR REPLACE type gr_business_client as object
(
business_id number,
business_type number,
business_address gr_addr,
date_founded date
);
/
CREATE TABLE GR_ACCOUNTS
(
ACCOUNT_ID CHAR(12 CHAR),
ACCOUNT_OPEN_DATE DATE,
BUSINESS_DETAILS GR_BUSINESS_CLIENT,
ACCOUNT_BALANCE FLOAT(126)
)
COLUMN BUSINESS_DETAILS NOT SUBSTITUTABLE AT ALL LEVELS;
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000001', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(1,1,
GR_ADDR('A','O''Reilly','103 Executive Circle','Suite 304','Cary','NC','27513','3021',NULL,'Wake','462','S36E23',NULL,NULL,'COMMERCIAL','945681235'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000002', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(2,1,
GR_ADDR('B','Neilson and Sons','114 Kildaire Farm Rd',NULL,'Cary','NC','27511','3102',NULL,'Wake','834','S36W24',NULL,NULL,'COMMERCIAL','753856123'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000003', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(3,1,
GR_ADDR('C','Orange Animal Hospital','45 Larkin Lane',NULL,'Cary','NC','27513','1788',NULL,'Wake','943','S86E43',NULL,NULL,'COMMERCIAL','9002412'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000004', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(4,1,
GR_ADDR('D','Smith Family Practice','46 Larkin Lane',NULL,'Cary','NC','27513','1781',NULL,'Wake','943','S46E83',NULL,NULL,'COMMERCIAL','833543512'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000005', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(5,1,
GR_ADDR('E','Orange Animal Hospital','27 Merrifield Place',NULL,'Cary','NC','27511','1830',NULL,'Wake','813','N37E79',NULL,NULL,'COMMERCIAL','838033245'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000006', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(6,1,
GR_ADDR('F','Hal''s Restaurant','43 Larkin Lane',NULL,'Cary','NC','27513','1785',NULL,'Wake','943','S31W27',NULL,NULL,'COMMERCIAL','956911234'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
Insert into GR_ACCOUNTS
(ACCOUNT_ID, ACCOUNT_OPEN_DATE, BUSINESS_DETAILS, ACCOUNT_BALANCE)
Values
('000000000007', TO_DATE('04/28/2010 08:10:52', 'MM/DD/YYYY HH24:MI:SS'), GR_BUSINESS_CLIENT(7,1,
GR_ADDR('G','Dr. Bradford','6124 Bellow Ct',NULL,'Raleigh','NC','27612','1988',NULL,'Wake','847','N76E20',NULL,NULL,'COMMERCIAL','561462356'),TO_DATE('05/27/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS')), 0);
COMMIT;