Problem when accessing Oracle Procedure with varchar2

M

Mullin Yu

hi,

i'm using System.Data.OracleClient; 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.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'UPDATE_DOC_NAME'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

at System.Data.OracleClient.OracleConnection.CheckError(OciHandle
errorHandle, Int32 rc)
at System.Data.OracleClient.OracleCommand.Execute(OciHandle
statementHandle, CommandBehavior beha
vior, Boolean isReader, Boolean needRowid, OciHandle& rowidDescriptor,
ArrayList& refCursorParameter
Ordinals)
at System.Data.OracleClient.OracleCommand.Execute(OciHandle
statementHandle, CommandBehavior beha
vior, Boolean needRowid, OciHandle& rowidDescriptor)
at System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean
needRowid, OciHandle& r
owidDescriptor)
at System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
at SynESDForm.Class1.Main(String[] args)

==============
C# source code:
==============

cmd.CommandText = "ESD_DLFORM_PKG.update_doc_name";
cmd.CommandType = CommandType.StoredProcedure;
//cmd.Parameters.Add(new OracleParameter("a1",
OracleType.Cursor)).Direction = ParameterDirection.Output;
//cmd.Parameters.Add(new OracleParameter("a2",
OracleType.Cursor)).Direction = ParameterDirection.Output;
//cmd.Parameters.Add(new OracleParameter("doc_id",
OracleType.VarChar)).Direction = ParameterDirection.Input;
//cmd.Parameters.Add(new OracleParameter("doc_name",
OracleType.VarChar)).Direction = ParameterDirection.Input;
OracleParameter paramDocID = new OracleParameter("p_doc_id",
OracleType.VarChar, 9, "DOCID");
paramDocID.Direction = ParameterDirection.Input;
paramDocID.Value = strDocID;
Console.WriteLine("strDocID: " + strDocID);
cmd.Parameters.Add(paramDocID);

cmd.ExecuteNonQuery();

==============
Oracle Procedure
==============
PROCEDURE update_doc_name (
p_doc_id IN ABC_DLFORM.DOCID%TYPE,
p_doc_name IN ABC_DLFORM.DOCNAME%TYPE
);

where DOCID and DOCNAME are varchar2 datatype
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top