求代码
有存储过程如下:
create or replace procedure updateclob(table_name in varchar2,field_id in varchar2, field_name in varchar2,v_id in number,v_pos in number,v_clob in varchar2)
is
lobloc clob;
c_clob varchar2(32767);
amt binary_integer;
pos binary_integer;
query_str varchar2(1000);
begin
pos:=v_pos*32766+1;
amt := length(v_clob);
c_clob:=v_clob;
query_str :='select '||field_name||' from '||table_name||' where '||field_id||'= :id for update ';
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);
commit;
exception
when others then
rollback;
end updateclob;
在c#中如何做循环,为什么总是抱错,01480的错误!!!!!
有存储过程如下:
create or replace procedure updateclob(table_name in varchar2,field_id in varchar2, field_name in varchar2,v_id in number,v_pos in number,v_clob in varchar2)
is
lobloc clob;
c_clob varchar2(32767);
amt binary_integer;
pos binary_integer;
query_str varchar2(1000);
begin
pos:=v_pos*32766+1;
amt := length(v_clob);
c_clob:=v_clob;
query_str :='select '||field_name||' from '||table_name||' where '||field_id||'= :id for update ';
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);
commit;
exception
when others then
rollback;
end updateclob;
在c#中如何做循环,为什么总是抱错,01480的错误!!!!!
try
{
if (Conn.State == ConnectionState.Closed) Conn.Open();
int count = richTextBox1.Text.Length / 32767;
int mod = richTextBox1.Text.Length % 32767;
if (mod > 0) count++;
for (int i = 1; i <= count; i++)
{
string sss = "";
if ((mod > 0) && (i == count))
{
sss = richTextBox1.Text.Substring((i - 1) * 32767, mod);
}
else sss = richTextBox1.Text.Substring((i - 1) * 32767, 32767);
OracleCommand oraclecommand = new OracleCommand("updateclob", Conn);
oraclecommand.CommandType = CommandType.StoredProcedure;
oraclecommand.Parameters.Add(new OracleParameter("table_name", OracleType.VarChar, 100));
oraclecommand.Parameters.Add(new OracleParameter("field_id", OracleType.VarChar, 100));
oraclecommand.Parameters.Add(new OracleParameter("field_name", OracleType.VarChar, 100));
oraclecommand.Parameters.Add(new OracleParameter("v_id", OracleType.Number, 10));
oraclecommand.Parameters.Add(new OracleParameter("v_pos", OracleType.Number, 10));
oraclecommand.Parameters.Add(new OracleParameter("v_clob", OracleType.VarChar, 2000));
// oraclecommand.Parameters.Add(new OracleParameter("ccc", OracleType.VarChar, 4000)); oraclecommand.Parameters["table_name"].Value = "TESTCLOB";//// 表名
oraclecommand.Parameters["field_id"].Value = "field_id"; //// 表id
oraclecommand.Parameters["field_name"].Value = "field_name";////clob字段
oraclecommand.Parameters["v_id"].Value = 1;////第几条记录数
oraclecommand.Parameters["v_pos"].Value = i - 1;/////插入位置
oraclecommand.Parameters["v_clob"].Value = sss;/////////插入值
MessageBox.Show(sss.Length.ToString());
// oraclecommand.Parameters["ccc"].Value = "csdfasdfasdf";/////////插入值
oraclecommand.ExecuteScalar();
MessageBox.Show("SUCCESS");
}
}
catch (System.Data.OracleClient.OracleException oe)
{
MessageBox.Show(oe.Message);
}
oraclecommand.Parameters.Add(new OracleParameter("v_clob", OracleType.VarChar, 2000)); 处是没有错误的,呵呵,写错了而已