Why OleDbCommand call oracle9i user function success,but OleDbCommand call failed.
-
/* This is my oracle function */ create or replace function EngUnitConvert(sSrcEng in varchar2, sDstEng in varchar2) return number is AtLeastLostOneCoefficient exception; vSrcEng Number; vDstEng Number; vValue Number; BEGIN begin -- Get source SELECT Mult_Fctr INTO vSrcEng From ip_eng_unit t WHERE t.units = UPPER(sSrcEng); dbms_output.put_line('Source Coefficient :' || to_char(vSrcEng)); -- Get destination SELECT Mult_Fctr INTO vDstEng From ip_eng_unit t WHERE t.units = UPPER(sDstEng); dbms_output.put_line('Destination Coefficient :' || to_char(vDstEng)); if ((vSrcEng is null) or (vDstEng is null)) then dbms_output.put_line('At Least Lost One Coefficient!'); raise AtLeastLostOneCoefficient; else vValue := vDstEng / vSrcEng; dbms_output.put_line('Result Coefficient :' || to_char(vValue)); end if; dbms_output.put_line('Finished!'); return vValue; end; exception when AtLeastLostOneCoefficient then null; WHEN OTHERS THEN NULL; END; /* This is my OleDbCommand call,but it failed */ // here OleDbConnecton have opened OleDbCommand sqlcmd = new OleDbCommand(); sqlcmd.CommandText = "unitconvert"; sqlcmd.CommandType = CommandType.StoredProcedure; sqlcmd.Connection = olecn;// olecn -- OleDbConnecton OleDbParameter ps = new OleDbParameter("s_from_eng",System.Data.OleDb.OleDbType.VarChar,32); ps.Direction = System.Data.ParameterDirection.Input; ps.Value = sFromUnit; OleDbParameter pd = new OleDbParameter("s_from_eng",System.Data.OleDb.OleDbType.VarChar,32); pd.Direction = System.Data.ParameterDirection.Input; pd.Value = sToUnit; OleDbParameter pr = new OleDbParameter("vvalue",System.Data.OleDb.OleDbType.Numeric,16); pr.Direction = System.Data.ParameterDirection.ReturnValue; sqlcmd.Parameters.Add(ps); sqlcmd.Parameters.Add(pd); sqlcmd.Parameters.Add(pr); sqlcmd.ExecuteNonQuery(); string sValue = sqlcmd.Parameters["vValue"].Value.ToString(); /* The error messages is: */ ORA-06550: line 1, column 7:\nPLS-00201: identifier 'UNITCONVERT' must be declared\nORA-06550: line 1, column 7:\nPL/SQL: Statement ignored /* Here is OracleDbCommand call,it success */ OracleConnection orcn=new OracleConnection("user id=totalplant;data source=totalplant;password=totalplant"); OracleCommand cmd=new OracleCommand("unitconvert",orcn); cmd.CommandType=CommandType.StoredProcedu