PLSQLDeveloper中调试含clob字段的存储过程中出现 ORA-03127: 在活动操作结束之前不允许进行操作

PLSQLDeveloper中调试含clob字段的存储过程中出现 ORA-03127: 在活动操作结束之前不允许进行操作,百思不得其解。

后查看英文书籍中clob讲解后突然觉悟,clob实际就是指针,调试中出线ora03127,但c#调用时未出现,证明存储过程中clob的用法是正确的,出现错误的原因是未释放clob的空间。


在测试窗口最后加上dbms_lob.freetemporary(:strlogclob);即可。

存储过程代码如下

procedure  proc_update(
                                       strLogClob out clob,
                                       retValue out int
                                       )

原先出现ora03127错误的测试代码如下:

declare
  -- Non-scalar parameters require additional processing 
  
begin
  
  
  -- Call the procedure
  proc_update(strlogclob => :strlogclob,
              retvalue => :retvalue);
  
end;


改正后的测试代码如下:

declare
  -- Non-scalar parameters require additional processing 
  
begin  
  
  -- Call the procedure
  proc_update(strlogclob => :strlogclob,
              retvalue => :retvalue);
  dbms_output.put_line('length(clob):'||dbms_lob.getlength(:strlogclob));
  --dbms_output.put_line('clob:'||:strlogclob);
  --注意,测试时要释放clob,但在C#端调用时,要由C#的调用方自行释放
  dbms_lob.freetemporary(:strlogclob);
end;


结束,调试过程清静了,再也没有ora03127。

posted on 2014-08-20 11:24  V吃饭睡觉打豆豆V  阅读(1035)  评论(0编辑  收藏  举报

导航