Mike Norman | Principal Software Designer |
613.288.4638
Oracle Server Technologies | EclipseLink Product
45 O'Connor Street, Suite 400 | Ottawa, ON K1P 1A4 | (fax) 613.238.2818
oratta wrote:
We try
to call a procedure as follow,
PROCEDURE procedure_record_call_nest(
input IN test_rec,
output OUT test_rec)
|
The procedure has two arguments of 'test_rec' as follow
TYPE test_nest_rec IS RECORD (
value01 varchar2(10),
value02 number);
TYPE test_rec IS RECORD (
column01 varchar2(10),
column02 number,
nest01 test_nest_rec);
And, we try to call the procedure with follow code
PLSQLrecord recordNest = new PLSQLrecord();
recordNest.setTypeName("test_pkg.test_nest_rec");
recordNest.setJavaType(TestNestRecDTO.class);
recordNest.addField("value01", JDBCTypes.VARCHAR_TYPE);
recordNest.addField("value02", JDBCTypes.NUMERIC_TYPE);
PLSQLrecord record = new PLSQLrecord();
record.setTypeName("test_pkg.test_rec");
record.setJavaType(TestRecDTO.class);
record.addField("column01", JDBCTypes.VARCHAR_TYPE);
record.addField("column02", JDBCTypes.NUMERIC_TYPE);
record.addField("nest01", recordNest);
PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall();
call.setProcedureName("test_pkg.procedure_record_call_nest");
call.addNamedArgument("input", record);
call.addNamedOutputArgument("output", record);
DataReadQuery query = new DataReadQuery();
query.addArgument("column01");
query.addArgument("column02");
query.addArgument("nest01");
query.setCall(call);
query.setResultType(DataReadQuery.ARRAY);
List attributes = new ArrayList();
attributes.add("tESt");
attributes.add(1);
List nestbutes = new ArrayList();
nestbutes.add("TesT");
nestbutes.add(1);
attributes.add(nestbutes);
List returnObject = (List)JpaHelper.getEntityManager(em).getActiveSession().executeQuery(query, attributes);
However we faced some error:
Caused by: oracle.oc4j.rmi.OracleRemoteException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.2.0.v20091016-r5565): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: 列の型が無効です。
Error Code: 17004
Call:
DECLARE
input_TARGET xxpoc_test_pkg.test003_rec;
output_TARGET xxpoc_test_pkg.test003_rec;
BEGIN
input_TARGET.column01 := :1;
input_TARGET.column02 := :2;
input_TARGET.nest01 := :3;
xxpoc_test_pkg.procedure_record_call_nest(input=>input_TARGET, output=>output_TARGET);
:4 := output_TARGET.column01;
:5 := output_TARGET.column02;
:6 := output_TARGET.nest01;
END;
bind => [:1 => tESt, :2 => 1, , , column01 => :4, column02 => :5, , ]
How can I do this?
Sorry for my poor english.
best regards
View this message in context: How
to Call a procedure which have nested record type?
Sent from the EclipseLink
- Users mailing list archive at Nabble.com.
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users