插入clob数据时出错

时间:2017-04-28 20:02:51

标签: oracle plsql oracle10g

您好我有一个存储过程接受字符串作为参数,它被分配给clob变量并在插入查询中使用它。

存储过程 -

CREATE OR REPLACE PROCEDURE INSERTPROC(my_data VARCHAR2)   
AS
  my_clob clob;
BEGIN         
      my_clob := my_data; 
      INSERT INTO MYTABLE(MYCLOBCOL) values (my_clob);     
COMMIT;
END;

但是在插入大块数据时,它会抛出错误。

java.sql.SQLException: ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 1

我将程序改为以下但我仍然认为它有效,

CREATE OR REPLACE PROCEDURE INSERTPROC(my_data VARCHAR2)   
    AS
      my_clob clob;
    BEGIN         
          --my_clob := my_data; 
          SELECT CONCAT(my_clob, my_data) INTO my_clob FROM DUAL;
          INSERT INTO MYTABLE(MYCLOBCOL) values (my_clob);     
    COMMIT;
    END;

任何有助于解决此问题的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

以上注释均有效,具体取决于Oracle的版本以及用于调用该过程的编程语言。我使用VB.NET(VS 2013)进行编码,当存储大型文本数据时,我在调用存储过程和存储过程本身时使用CLOB作为参数类型。假设java调用可以使用CLOB类型,请将过程更改为:

CREATE OR REPLACE PROCEDURE INSERTPROC(my_data CLOB)   
AS
BEGIN         
      INSERT INTO MYTABLE(MYCLOBCOL) values (my_data);     
COMMIT;
END;

Varchar2限制为4000个字符,根据数据库版本,CLOB限制为2GB。