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

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -