Unable to get Oracle Package function to execute in c# -
i'm having difficulty trying call dba's function inside c#. works fine in oracle query browser, when attempt execute in c# fails.
the common error : "ora-06502: pl/sql: numeric or value error: character string buffer small ora-06512: @ line 1"
i've attempted increase size of c# parameters no success. not sure i'm doing wrong.
c# code :
string returnvalue = string.empty; using (oracleconnection cn = new oracleconnection("connectionstring")) { using (oraclecommand cmd = new oraclecommand()) { cmd.connection = cn; cmd.commandtext = "package.function"; cmd.commandtype = commandtype.storedprocedure; oracleparameter param1 = new oracleparameter(); oracleparameter param2 = new oracleparameter(); oracleparameter param3 = new oracleparameter(); oracleparameter param4 = new oracleparameter(); oracleparameter param5 = new oracleparameter(); param1.oracledbtype = oracledbtype.varchar2; param1.direction = parameterdirection.input; param1.value = "test808"; param1.parametername = "var1"; //param1.size = 2000; param2.oracledbtype = oracledbtype.varchar2; param2.direction = parameterdirection.input; param2.value = "68b54814"; param2.parametername = "var2"; //param2.size = 2000; param3.oracledbtype = oracledbtype.varchar2; param3.direction = parameterdirection.input; param3.value = "71839"; param3.parametername = "var4"; //param3.size = 2000; param4.oracledbtype = oracledbtype.varchar2; param4.direction = parameterdirection.input; param4.value = 55 ; param4.parametername = "var4"; //param4.size = 2000; param5.oracledbtype = oracledbtype.varchar2; param5.direction = parameterdirection.returnvalue; param5.parametername = "return"; //param5.size = 2000; cmd.parameters.add(param1); cmd.parameters.add(param2); cmd.parameters.add(param3); cmd.parameters.add(param4); cmd.parameters.add(param5); try { cn.open(); cmd.executenonquery(); returnvalue = cmd.parameters["return"].value.tostring(); } catch { } { cn.close(); } } } return returnvalue;
function header:
function create_rec (p_mims_pallet_id varchar2 ,p_item_no varchar2 ,p_packer_id varchar2 ,p_tare_wt varchar2 ) return varchar2
1st time trying oracle calls. never had issue sql. parameter.size commented out not seeming anything.
was able working removing individual parameters , creating them parameter.add method.
working code:
string returnvalue = string.empty; using (oracleconnection cn = new oracleconnection("constring")) { using (oraclecommand cmd = new oraclecommand()) { cmd.connection = cn; cmd.commandtext = "package.function"; cmd.commandtype = commandtype.storedprocedure; cmd.parameters.add("rv", oracledbtype.varchar2, 200, "", parameterdirection.returnvalue); cmd.parameters.add("var1", oracledbtype.varchar2, 20, "test808", parameterdirection.input); cmd.parameters.add("var2", oracledbtype.varchar2, 20, "68b54814", parameterdirection.input); cmd.parameters.add("var3", oracledbtype.varchar2, 20, "71839", parameterdirection.input); cmd.parameters.add("var4", oracledbtype.decimal, 55, parameterdirection.input); try { cn.open(); cmd.executenonquery(); returnvalue = cmd.parameters["rv"].value.tostring(); } catch { } { cn.close(); } } } return returnvalue;
i fixed issue changing syntax. giving numeric or value overflow error if use below syntax:
cmd.parameters.add("strsqlmsg", oracledbtype.varchar2, 255, parameterdirection.output);
which changed below , worked.
cmd.parameters.add("strsqlmsg", oracledbtype.varchar2, parameterdirection.output).size=255;
hope work you. thanks. atul
Comments
Post a Comment