Error on describing two and more object parameters of stored procedures
Posted: Mon 11 Dec 2006 16:20
For CoreLab team.
After installation last version 5.80.0.38

By execute SQL.CreateProcCall of TOraSession code produces Access Violation, if procedure contain 2 or more object params.
Error location:
unit OraClasses
procedure InitProcParams8
row: ObjectType.AddRef;
Example:
1. connect as system user and execute:
CREATE USER TEST_INK IDENTIFIED BY P1234;
GRANT CONNECT TO TEST_INK;
GRANT CREATE PROCEDURE TO TEST_INK;
GRANT CREATE TYPE TO TEST_INK;
2. connect as TEST_INK and execute:
CREATE OR REPLACE TYPE TEST_1 AS OBJECT(id number(10));
CREATE OR REPLACE TYPE TEST_2 AS OBJECT(id varchar2(10));
CREATE OR REPLACE PACKAGE TEST_PACK2 AS
PROCEDURE SET_DATA(PI_DATI1 TEST_1, PI_DATI2 TEST_2);
END TEST_PACK2;
/
CREATE OR REPLACE PACKAGE BODY TEST_PACK2 AS
PROCEDURE SET_DATA(PI_DATI1 TEST_1, PI_DATI2 TEST_2) IS
BEGIN
NULL;
END SET_DATA;
END TEST_PACK2;
/
3. If from delphi execute (as user TEST_INK on TOraSession component)
OraSession1.SQL.CreateProcCall('TEST_PACK2.SET_DATA');
then receive error "Access violation ...."
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Delphi 6
ODAC 5.80.0.38 source code
After installation last version 5.80.0.38
By execute SQL.CreateProcCall of TOraSession code produces Access Violation, if procedure contain 2 or more object params.
Error location:
unit OraClasses
procedure InitProcParams8
row: ObjectType.AddRef;
Example:
1. connect as system user and execute:
CREATE USER TEST_INK IDENTIFIED BY P1234;
GRANT CONNECT TO TEST_INK;
GRANT CREATE PROCEDURE TO TEST_INK;
GRANT CREATE TYPE TO TEST_INK;
2. connect as TEST_INK and execute:
CREATE OR REPLACE TYPE TEST_1 AS OBJECT(id number(10));
CREATE OR REPLACE TYPE TEST_2 AS OBJECT(id varchar2(10));
CREATE OR REPLACE PACKAGE TEST_PACK2 AS
PROCEDURE SET_DATA(PI_DATI1 TEST_1, PI_DATI2 TEST_2);
END TEST_PACK2;
/
CREATE OR REPLACE PACKAGE BODY TEST_PACK2 AS
PROCEDURE SET_DATA(PI_DATI1 TEST_1, PI_DATI2 TEST_2) IS
BEGIN
NULL;
END SET_DATA;
END TEST_PACK2;
/
3. If from delphi execute (as user TEST_INK on TOraSession component)
OraSession1.SQL.CreateProcCall('TEST_PACK2.SET_DATA');
then receive error "Access violation ...."
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0
Delphi 6
ODAC 5.80.0.38 source code