Hello!
I've a problem with ODAC versions.
In broad terms, I use a TOraObject to send my data to a stored procedure; I fill it with a virtual table, where I insert my data.
Here is my situation (a part of my code):
1. I Create a TOraObject
criteriaContainer := TORAObject.Create(nil);
criteriaContainer.CreateObject(OraSession.OCISvcCtx, 'CRITERIACONTAINERB');
2. I fill with my data
tempObj := TOraObject.Create(nil);
tempObj.CreateObject(OraSession.OCISvcCtx, 'CR_B_COMMENT_NEXT');
tempObj.AttrAsString['STEXT'] := sComment;
iIdx := TOraNestTable(criteriaContainer.AttrAsObject['tCriteriaList']).Size;
TOraNestTable(criteriaContainer.AttrAsObject['tCriteriaList']).ItemAsObject[iIdx] := tempObj;
3. and i call a stored procedure with my data as parameter
resultSet.ParamByName('p_criteriaContainer').AsObject := criteriaContainer;
4. Finally I call
resultset.Execute
If I use the ODAC 5.80.0.42 and previous versions everything is ok, no bug, no problems.
But if I use any ODAC 6 Version (from 6.20 to 6.70), when i Execute i receive this message from Oracle:
"Method dispatch on NULL SELF argument is disallowed"
The Oracle version I use is 9.2.0.7.
I think my problems concerning the #1, where I create the TOraObject and OCISvcCtx of OraSession is passed as parameter. Perhaps the inner structures of Ora classes changing from a ODAC version to another, and in particular cases (like this) the pointers generates mistakes... I don't know.
I searched through the net an answer, but no one I have found.
Could be a compatibility problem between ODAC and Oracle versions?
Any idea? Has anyone seen a behavior like this?
Thanks a lot for your time,
sdrosg