hi,
i'm using System.Data.Ora cleClient; but it seems not having Varchar2 and i
use Varchar instead. Then when i call a Oracle Procedure update a table with
varchar2, i got the following error:
==============
Error Message
==============
System.Data.Ora cleClient.Oracl eException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'UPDATE_DOC_NAM E'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
at System.Data.Ora cleClient.Oracl eConnection.Che ckError(OciHand le
errorHandle, Int32 rc)
at System.Data.Ora cleClient.Oracl eCommand.Execut e(OciHandle
statementHandle , CommandBehavior beha
vior, Boolean isReader, Boolean needRowid, OciHandle& rowidDescriptor ,
ArrayList& refCursorParame ter
Ordinals)
at System.Data.Ora cleClient.Oracl eCommand.Execut e(OciHandle
statementHandle , CommandBehavior beha
vior, Boolean needRowid, OciHandle& rowidDescriptor )
at System.Data.Ora cleClient.Oracl eCommand.Execut eNonQueryIntern al(Boolean
needRowid, OciHandle& r
owidDescriptor)
at System.Data.Ora cleClient.Oracl eCommand.Execut eNonQuery()
at SynESDForm.Clas s1.Main(String[] args)
==============
C# source code:
==============
cmd.CommandText = "ESD_DLFORM_PKG .update_doc_nam e";
cmd.CommandType = CommandType.Sto redProcedure;
//cmd.Parameters. Add(new OracleParameter ("a1",
OracleType.Curs or)).Direction = ParameterDirect ion.Output;
//cmd.Parameters. Add(new OracleParameter ("a2",
OracleType.Curs or)).Direction = ParameterDirect ion.Output;
//cmd.Parameters. Add(new OracleParameter ("doc_id",
OracleType.VarC har)).Direction = ParameterDirect ion.Input;
//cmd.Parameters. Add(new OracleParameter ("doc_name",
OracleType.VarC har)).Direction = ParameterDirect ion.Input;
OracleParameter paramDocID = new OracleParameter ("p_doc_id",
OracleType.VarC har, 9, "DOCID");
paramDocID.Dire ction = ParameterDirect ion.Input;
paramDocID.Valu e = strDocID;
Console.WriteLi ne("strDocID: " + strDocID);
cmd.Parameters. Add(paramDocID) ;
cmd.ExecuteNonQ uery();
==============
Oracle Procedure
==============
PROCEDURE update_doc_name (
p_doc_id IN ABC_DLFORM.DOCI D%TYPE,
p_doc_name IN ABC_DLFORM.DOCN AME%TYPE
);
where DOCID and DOCNAME are varchar2 datatype
i'm using System.Data.Ora cleClient; but it seems not having Varchar2 and i
use Varchar instead. Then when i call a Oracle Procedure update a table with
varchar2, i got the following error:
==============
Error Message
==============
System.Data.Ora cleClient.Oracl eException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'UPDATE_DOC_NAM E'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
at System.Data.Ora cleClient.Oracl eConnection.Che ckError(OciHand le
errorHandle, Int32 rc)
at System.Data.Ora cleClient.Oracl eCommand.Execut e(OciHandle
statementHandle , CommandBehavior beha
vior, Boolean isReader, Boolean needRowid, OciHandle& rowidDescriptor ,
ArrayList& refCursorParame ter
Ordinals)
at System.Data.Ora cleClient.Oracl eCommand.Execut e(OciHandle
statementHandle , CommandBehavior beha
vior, Boolean needRowid, OciHandle& rowidDescriptor )
at System.Data.Ora cleClient.Oracl eCommand.Execut eNonQueryIntern al(Boolean
needRowid, OciHandle& r
owidDescriptor)
at System.Data.Ora cleClient.Oracl eCommand.Execut eNonQuery()
at SynESDForm.Clas s1.Main(String[] args)
==============
C# source code:
==============
cmd.CommandText = "ESD_DLFORM_PKG .update_doc_nam e";
cmd.CommandType = CommandType.Sto redProcedure;
//cmd.Parameters. Add(new OracleParameter ("a1",
OracleType.Curs or)).Direction = ParameterDirect ion.Output;
//cmd.Parameters. Add(new OracleParameter ("a2",
OracleType.Curs or)).Direction = ParameterDirect ion.Output;
//cmd.Parameters. Add(new OracleParameter ("doc_id",
OracleType.VarC har)).Direction = ParameterDirect ion.Input;
//cmd.Parameters. Add(new OracleParameter ("doc_name",
OracleType.VarC har)).Direction = ParameterDirect ion.Input;
OracleParameter paramDocID = new OracleParameter ("p_doc_id",
OracleType.VarC har, 9, "DOCID");
paramDocID.Dire ction = ParameterDirect ion.Input;
paramDocID.Valu e = strDocID;
Console.WriteLi ne("strDocID: " + strDocID);
cmd.Parameters. Add(paramDocID) ;
cmd.ExecuteNonQ uery();
==============
Oracle Procedure
==============
PROCEDURE update_doc_name (
p_doc_id IN ABC_DLFORM.DOCI D%TYPE,
p_doc_name IN ABC_DLFORM.DOCN AME%TYPE
);
where DOCID and DOCNAME are varchar2 datatype
Comment