如何使用utl_compress.lz_compress压缩blob列并将其插入另一个表

时间:2016-11-18 20:29:28

标签: oracle compression blob

我是oracle pl sql的新手。 有一个带有blob列的表(tableA),我想获取此列,使用utl_compress.lz_compress(blob_column)压缩它,然后使用过程将此列插入' tableB'中。 我尝试了一些方法来做到这一点,但我得到的不好的论点'错误。 非常感谢你。

  编辑:我需要这样的事情

procedure myProcedure as
 begin  
  FOR myrectype IN (SELECT * FROM  tableA) 
  LOOP
  insert into tableB(id,blob_column) values(myrectype.id,utl_compress.lz_compress(myrectype.blob_column));
  END LOOP

 end myProcedure;
  

例外:

29261. 00000 -  "bad argument"
*Cause:    A bad argument was passed to the PL/SQL API.
*Action:   Check the arguments passed to the PL/SQL API and retry the call.
others exception with code :  -29261
others exception with mssg :  ORA-29261: bad argumen

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。需要先将utl_compress.lz_compress(myrectype.blob_column)存储在变量中。我将程序更改为:

procedure myProcedure as
v_blob_column blob;
 begin  
  FOR myrectype IN (SELECT * FROM  tableA) 
  LOOP
  v_blob_column := utl_compress.lz_compress(myrectype.blob_column);
  insert into tableB(id,blob_column) values(myrectype.id,v_blob_column);
  END LOOP

end myProcedure;

由于