Problem when accessing Oracle Procedure with varchar2

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mullin Yu

    Problem when accessing Oracle Procedure with varchar2

    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


  • Mullin Yu

    #2
    Re: Problem when accessing Oracle Procedure with varchar2

    fixed!

    thanks!


    "Mullin Yu" <mullin_yu@ctil .com> wrote in message
    news:%23gKg6oT$ EHA.612@TK2MSFT NGP09.phx.gbl.. .[color=blue]
    > 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[/color]
    with[color=blue]
    > 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[/color]
    System.Data.Ora cleClient.Oracl eCommand.Execut eNonQueryIntern al(Boolean[color=blue]
    > 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
    >
    >[/color]


    Comment

    Working...