OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["NEWOracleConn"].ToString());
            OracleCommand cmd = new OracleCommand("UPDATE TUSER SET PHOTO=:photo   WHERE userid=:id", conn);
            Console.WriteLine(cmd.CommandText);
            cmd.Parameters.Add("photo",OracleType.Blob);
            cmd.Parameters["photo"].Value = photo;
            cmd.Parameters.Add("id", OracleType.Number);
            cmd.Parameters["id"].Value = id;
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();   参数前面 加上冒号试试
服务器与本机oracle一个版本吗?

解决方案 »

  1.   

    wrong number or types of arguments in call to 'INSERTTOEBSCODE' 先看看你的数据表那些字段分别是什么类型.你看看你的存储过程参数,已经代码里的参数类型,都是varchar2,如果和你数据表不对应,那当然就错了.不是说都设置成varchar2就可以存的,oracle不得行.sql server似乎可以.
      

  2.   

    oracle参数是:
    :参数, 不是@参数
      

  3.   

    不对的,我这是调用存储过程中的参数,应该不用:号。如果是用:号应该是调用function里面的如果问题是出在这里的话,那另一台机器也应该不正常,现在是一台机子正常另一台机子不正常
      

  4.   

    至于数据库中的表结构,我也是被逼上梁山,将要写入的数据把它全设成了varchar2型
    FORMPRICEID VARCHAR2(20)
    VENDOR_ID NUMBER
    VENDOR_SITE_ID NUMBER
    ITEM_ID NUMBER
    UNIT_PRICE VARCHAR2(20)
    EFFECTIVE_DATE VARCHAR2(20)
    POCT VARCHAR2(10)
    ITEM_CODE VARCHAR2(20)
    PASSED_DATE VARCHAR2(20)
    TERMS_ID NUMBER
    CURRENCY_CODE VARCHAR2(20)
    VAT_CODE_ID NUMBER
    CREATE_DATE VARCHAR2(20)
    PURCHASER VARCHAR2(20)
    CHECKER VARCHAR2(20)
    AUDITOR VARCHAR2(20)
    COMPANYTYPE NUMBER
    ORG_ID NUMBER
    VENDOR_CODE VARCHAR2(20)
    VENDOR_SITE_CODE VARCHAR2(20)
    VAT_CODE VARCHAR2(20)
    TAX_CODE VARCHAR2(20)
    TERMS_DESC VARCHAR2(100)
      

  5.   

    你的存储过程在Oracle 9i  运行  
    出现 : 警告: 创建的过程带有编译错误。
      

  6.   

    是的,跟版本的編譯有關聯,另外,存入null值也會出現問題.問題已經解決了.謝謝.