例子如下
CREATE OR REPLACE PROCEDURE TYXC_DBA.PRO_HYTJ_HP_CKBYFMXB( I_SQLWHERE    IN VARCHAR2     --查询条件IS 
   
BEGIN
        SELECT BH,MC 
          FROM TBL_A 
         EHERE BH= I_SQLWHERE;
      
END;
/上年是个简单的样子I_SQLWHERE参数是我在程序里面并的字符串,是BH字段并的,长度超过了7~8万,现在用 VARCHAR2 不够用了.我用LONG试了一下,也出错。请教一下,程序里和过程中用什么类型才能把I_SQLWHERE参数传进来。

解决方案 »

  1.   

     
     可以试试clob和blob,它们的最大可达4G。最大长度可超过42亿字节!存个7~8万,绰绰有余!
      

  2.   

    用CLOB和 BLOB的话,怎么穿参呢,这样吗?
      

  3.   

    是不是参数要改成 I_SQLWHERE    IN CLOB
    还是怎么改?程序里像过程理传的时候,类型用哪个? 
      

  4.   

    I_SQLWHERE    IN CLOB就可以了,oracle动态语句可以为clob类型,不需要做额外转换。你的程序是指什么?
      

  5.   

    哦,程序是指代码里调用过程的时候传参数的类型
    我用的是.NET
    parameter_flag = New OracleClient.OracleParameter("O_FLAG", Oracle ient.OracleType.VarChar, 2)就是上面这句话里面的Oracle ient.OracleType.VarChar 用VarChar是不行的了,也用CLOB类型吗?