存储过程如下:
CREATE OR REPLACE PROCEDURE dtk_read_clob
(
--  l_amount in out number,
  l_offset in number
)
IS
  l_locator CLOB default empty_clob();
  l_readbuf varchar2(2000);
  l_amount number(6);  BEGIN
  SELECT COL_CLOB INTO l_locator FROM hhc.hhc_clob WHERE IND = 1;
  DBMS_LOB.READ(l_locator,l_amount,l_offset,l_readbuf);
  commit;
  END;
调用执行如下:
SQL> exec aa_read_clob(1);
BEGIN aa_read_clob(1); END;*
ERROR 位于第 1 行:
ORA-06502: PL/SQL: 数字或值错误
ORA-06512: 在"SYS.DBMS_LOB", line 715
ORA-06512: 在"SYS.AA_READ_CLOB", line 13
ORA-06512: 在line 1请各帮忙看看,多谢了

解决方案 »

  1.   

    我本来是想写成这样:三个参数,将读取的内容放在readbuf 中:
    CREATE OR REPLACE PROCEDURE aa_read_clob(
      l_amount in out number,
      l_offset in number,
      l_readbuf out varchar2) IS
      l_locator CLOB;
      BEGIN
      SELECT COL_CLOB INTO l_locator FROM hhc.hhc_clob WHERE IDX = 1;
      DBMS_LOB.READ(l_locator,l_amount,l_offset,l_readbuf);
      commit;
      END;
    但是也不指导该怎么去调用这个存储过程:(
    小弟初学,我分不多了,在线等待,
    怎么还没有人回答啊,
    请各位高人多多指点啊
      

  2.   

    to: hongqi162(失踪的月亮) :
    你执行的存储过程与你提供的不是一个啊,是不是字符串连接你用+号了 应该用||
    这个是名字贴错了:!
    我这里没有用到字符串连接的啊,我也不会跟踪调试什么的,请再帮我看看吧
      

  3.   

    搞了好久了,没头绪啊
    我的MSN: [email protected] 16小时在线等!
      

  4.   

    看看这个http://www.akadia.com/services/read_file_with_dbms_lob.html
      

  5.   

    http://psoug.org/reference/dbms_lob.html
      

  6.   

    再次感谢hongqi162(失踪的月亮) 
    在oracle命令行中调用带参数的存储过程时,参数不能直接用数值代入,而是要先declare这些输入输出变量,然后在begin...end中给输入变量赋值和调用存储过程,在调用时输入参数的值只能用刚声名的变量来代替,不可直接用值来代入,不知说清楚了没有呵呵