K2InformaticsGmbH / erloci

Erlang Oracle native driver - DEPRECATED, see https://github.com/K2InformaticsGmbH/oranif instead
Apache License 2.0
37 stars 11 forks source link

SQLT_VNU as out parameter is not supported #25

Open c-bik opened 7 years ago

c-bik commented 7 years ago

Works:

PlSql = <<"BEGIN :p_Absolute:=round(abs(:p_val1),0); :p_Floor:=round(floor(:p_val2),0); END;">>.
PlSqlBindVars = [{<<":p_val1">>,in,'SQLT_VNU'},{<<":p_val2">>,in,'SQLT_VNU'},
{<<":p_Absolute">>,out,'SQLT_INT'},{<<":p_Floor">>,out,'SQLT_INT'}].
PlSqlStmt = OciSession:prep_sql(PlSql).
ok = PlSqlStmt:bind_vars(PlSqlBindVars).
PlSqlStmt:exec_stmt([{oci_util:to_num("-5.5"), oci_util:to_num("4.9"),0,0}], 1).
> {executed,1,[{<<":p_Absolute">>,6},{<<":p_Floor">>,4}]}
ok = PlSqlStmt:close().

Doesn't work:

PlSql = <<"BEGIN :p_Absolute := abs(:p_val1); :p_Floor := floor(:p_val2); END;">>.
PlSqlBindVars = [{<<":p_val1">>,in,'SQLT_VNU'},{<<":p_val2">>,in,'SQLT_VNU'},
                           {<<":p_Absolute">>,out,'SQLT_VNU'},{<<":p_Floor">>,out,'SQLT_VNU'}].
PlSqlStmt = OciSession:prep_sql(PlSql).
ok = PlSqlStmt:bind_vars(PlSqlBindVars).
PlSqlStmt:exec_stmt([{oci_util:to_num("-5.5"), oci_util:to_num("4.9"),
                      oci_util:to_num("-100.100"), oci_util:to_num("-100.100")}], 1).
> {error,{0,
        <<"[ocistmt::execute:763] unsupporetd type 6\n">>}}
ok = PlSqlStmt:close().