You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a bug in OCILIB when using the "CALL" keyword.
OCI is automatically updating output bind buffers for scalar types (int, float, double, strings, dates) as OCILIB passes host variables address directly to OCI.
For non scalar types (all handle based types such as lobs, timestamps, .... + big int), OCILIB is passing internal pointers and then must update them after statement execution.
It updates output bind buffers only when it is a PL/SQL call as other SQL statement types do not modify host variables.
When a SQL statement is parsed, OCILIB retrieves its type from OCI. Oracle has recently added a new constant value for "CALL" statements.
OCILIB was checking against "BEGIN" and "DECLARE" statement types only as the "CALL" type was not exposed by OCI in previous Oracle Releases.
The fix consist in adding the "CALL" type in the list of types that identifies a SQL statement as a PL/SQL statement
There is a problem using BinInt typed items to return OUT parameters of stored procedures.
Example procedure:
create or replace procedure test_big_int(value_in in number, value_out out number) is
begin
value_out := value_in;
end;
Example C code:
With the procedure call in the form shown above ("begin proc(...); end;") the bi variable is updated.
However, if the procedure call is changed to the otherwise equivalent "call proc(...)" the bi variable is not updated.
The text was updated successfully, but these errors were encountered: