表中有一列是XMLType类型的,程序里用参数化的OracleCommand执行插入,但是会提示ORA-01461错误。跟踪发现对应那列的参数内容是5000+字符的一段xml文档,该参数定义为Oracle.CLOB类型。客户端和服务器都是Oracle10.2g黔驴技穷,毫无办法。。 多谢各位~~

解决方案 »

  1.   

    blob类型,需要有专门方法,去网上google一下,有很多例子。
      

  2.   

    网上的例子也都是用OracleParameter的,我已经这么做了可是还不行啊。
      

  3.   

    XMLTYPE实际上是CLOB,超过2k要用其他方法 
    用参数 
    OracleParameter param = new OracleParameter("", OracleDbType.Clob); 
      param.Direction = ParameterDirection.Input; 
      param.Value = str; 
      cmd.Parameters.Add(param); 
    或存储过程 
      

  4.   


    我已经使用这种方法了,没有用这种方法前,使用的是SQL命令字符串,这时提示的错误时字符串过长。后来换成了OracleParameter,就是你帖子里的这种,当xml串很长时, 会提示01461。刚才我把表中XMLType的列换成NCLOB后,貌似没有问题了。 但是还是不知道原因。
      

  5.   

    对象化映射的时候
    NUMBER:decimal
    LAW:object
    Long:decimal
    Int:decimal
    bool:decimal
    //CodeSmith自动转化为object
    blob:object
            clob:objectOracleParameter,只定义OracleDbType.Clob,BLOB为byte[]数组哦,需要传入具体可以参考FortuneBase中N_SEC_USER交互部分
    参考地址www.cnblogs.com/mail-ricklee