create or replace procedure insertclob(table_name in varchar2,
comment1 in varchar2,nn_id in number) 
as
lob_loc clob;
amt integer;
pos integer := 1;
v_clob varchar2(4000);
begin
v_clob := comment1;
amt := LENGTH(v_clob);
select comment1 into lob_loc from table_name where n_id=nn_id;
DBMS_LOB.WRITE(lob_loc, amt, pos, v_clob);
dbms_output.put_line('Inserted');
commit;
end;

解决方案 »

  1.   

    要了解DBMS_LOB.WRITE这个函数参数类型
    DBMS_LOB.WRITE (
       lob_loc  IN OUT  NOCOPY CLOB   CHARACTER SET ANY_CS,
       amount   IN             BINARY_INTEGER,
       offset   IN             INTEGER,
       buffer   IN             VARCHAR2 CHARACTER SET lob_loc%CHARSET); 
      

  2.   

    varchar2 最大长度为4000
      

  3.   

    在procedure 的形参中不能有长度的信息。去掉 comment1 in varchar2(32764) 后应该可以
    编译通过。如果想取得对形参的限制,请使用%Type 类型的参数。