这是存储过程:
create or replace procedure sp_update_clob(
     table_name  in varchar2,
     field_id     in varchar2,
     field_name  in varchar2,
     v_pos       in number,
     v_id        in number,
     v_clob      in varchar2,
     Result out integer)
is
     lobloc  clob;
     c_clob  varchar2(32767);
     amt   binary_integer;
     pos   binary_integer;
     query_str  varchar2(500);
begin
   pos:=v_pos*32766+1;
   amt := length(v_clob);
   c_clob:=v_clob;
--insert
   query_str :='select '||field_name||' from '||table_name||' where '||field_id||'= :id for update ';
--initialize buffer with data to be inserted or updated
   EXECUTE IMMEDIATE query_str INTO lobloc USING v_id;
--from pos position, write 32766 varchar2 into lobloc
   dbms_lob.write(lobloc, amt, pos, c_clob);
   Result:=1;
   commit;
exception
   when others then
   Result:=-1;
   rollback;
end;
这是C#调用代码:
string mConn="data source=hndm;user id=hndmuser;password=hndmpass";//连接数据库             conn=new OracleConnection(mConn);             cmd=conn.CreateCommand();             cmd.CommandText="sp_update_clob";//存储过程名             cmd.CommandType=CommandType.StoredProcedure;//声明调用存储过程             //存储过程的参数,paramin代表参数名,OracleType.VarChar代表参数类型,20代表参数的大小 
            OracleParameter param_in=cmd.Parameters.Add("table_name",OracleType.VarChar,20);             param_in.Direction=ParameterDirection.Input;//代表参数的存储方式             param_in.Value="news";             OracleParameter param_in1=cmd.Parameters.Add("field_id",OracleType.VarChar,20);             param_in1.Direction=ParameterDirection.Input;             param_in1.Value="news_id";             OracleParameter param_in2=cmd.Parameters.Add("field_name",OracleType.VarChar,20);             param_in2.Direction=ParameterDirection.Input;             param_in2.Value="news_text";             OracleParameter param_in3=cmd.Parameters.Add("v_id",OracleType.Number,9);             param_in3.Direction=ParameterDirection.Input;             param_in3.Value=1;            OracleParameter param_in4=cmd.Parameters.Add("v_pos",OracleType.Number,9);             param_in4.Direction=ParameterDirection.Input;             param_in4.Value=1;
            OracleParameter param_in5=cmd.Parameters.Add("v_clob",OracleType.VarChar,20);             param_in5.Direction=ParameterDirection.Input;             param_in5.Value=this.richTextBox1.Text;
            
            OracleParameter param_out=cmd.Parameters.Add("Result",OracleType.Number);              param_out.Direction=ParameterDirection.Output; 
               
            conn.Open();             //执行存储过程             cmd.ExecuteNonQuery();             //返回参数的值 
            this.richTextBox1.Text="显示:"+param_out.Value.ToString();
                        conn.Close(); 
高手们帮我看看错在哪里!