BLOB、CLOB流类型的Update更新实例

 

由于表设计运用了BLOB流类型用来存储大文件数据,因此SQL书写中需要根据BLOBCLOL类型的特性进行初始化,

运用EMPTY_BLOB(),EMPTY_CLOB()方法,如:

UPDATE SRE_MSTR
SET
  SRE_NBR = :SRE_NBR, SRE_DATE = :SRE_DATE, SRE_VEND = :SRE_VEND, SRE_TYPE = :SRE_TYPE, SRE_RMKS = :SRE_RMKS, SRE_FILENAME = :SRE_FILENAME, 
  SRE_FILE_TYPE = :SRE_FILE_TYPE, SRE_REALNAME = :SRE_REALNAME, SRE_AUD_DESC = :SRE_AUD_DESC, SRE_PUR = :SRE_PUR, SRE_PUR_BY = :SRE_PUR_BY, 
  SRE_PUR_DATE = :SRE_PUR_DATE, SRE_QC = :SRE_QC, SRE_QC_BY = :SRE_QC_BY, SRE_QC_DATE = :SRE_QC_DATE, SRE_ENG = :SRE_ENG, SRE_ENG_BY = :SRE_ENG_BY, 
  SRE_ENG_DATE = :SRE_ENG_DATE, SRE_COM_ASS = :SRE_COM_ASS, SRE_PUR1 = :SRE_PUR1, SRE_PUR1_BY = :SRE_PUR1_BY, SRE_PUR1_DATE = :SRE_PUR1_DATE, SRE_QC1 = :SRE_QC1, 
  SRE_QC1_BY = :SRE_QC1_BY, SRE_QC1_DATE = :SRE_QC1_DATE, SRE_ENG1 = :SRE_ENG1, SRE_ENG1_BY = :SRE_ENG1_BY, SRE_ENG1_DATE = :SRE_ENG1_DATE, SRE_SUP_SCO = :SRE_SUP_SCO, 
  SRE_SUP_TYPE = :SRE_SUP_TYPE, SRE_CON = :SRE_CON, SRE_APRV = :SRE_APRV, SRE_APRV_BY = :SRE_APRV_BY, SRE_APRV_DATE = :SRE_APRV_DATE, SRE_VAL = :SRE_VAL, 
  SRE_INVAL = :SRE_INVAL, SRE_INVAL_BY = :SRE_INVAL_BY, SRE_INVAL_DATE = :SRE_INVAL_DATE, SRE_SITE = :SRE_SITE, SRE_WF_STATUS = :SRE_WF_STATUS, SRE_PROG_CODE = :SRE_PROG_CODE, 
  SRE_DOC_CODE = :SRE_DOC_CODE, SRE_CRT_BY = :SRE_CRT_BY, SRE_CRT_DATE = :SRE_CRT_DATE, SRE_MOD_TIMES = :SRE_MOD_TIMES, SRE_MOD_BY = :SRE_MOD_BY, SRE_MOD_DATE = :SRE_MOD_DATE, 
  SRE_PST = :SRE_PST, SRE_PST_BY = :SRE_PST_BY, SRE_PST_DATE = :SRE_PST_DATE, SRE_CHAR1 = :SRE_CHAR1, SRE_CHAR2 = :SRE_CHAR2, SRE_CHAR3 = :SRE_CHAR3, SRE_CHAR4 = :SRE_CHAR4, 
  SRE_CHAR5 = :SRE_CHAR5, SRE_CHAR6 = :SRE_CHAR6, SRE_QTY1 = :SRE_QTY1, SRE_QTY2 = :SRE_QTY2,
  SRE_FILE = EMPTY_BLOB(),SRE_FILE1 = EMPTY_BLOB(),SRE_FILENAME1=:SRE_FILENAME1
WHERE
  SRE_NBR = :Old_SRE_NBR
RETURNING
  SRE_FILE,SRE_FILE1
INTO 
  :SRE_FILE,:SRE_FILE1;

 

转载于:https://www.cnblogs.com/su1643/p/6552414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Oracle中,备份含有long、long raw、blobclob等大对象类型的表时,可能会出现错误提示“非法数据类型long”或“非法数据类型long raw”等。这是因为在Oracle中,这些大对象类型的数据不同于普通的数据类型,需要特殊处理才能备份和恢复。 要备份含有大对象类型的表,可以使用Oracle提供的exp和imp工具。具体步骤如下: 1. 确定需要备份的表名和所在的schema。 2. 使用exp工具备份表,命令格式如下: ``` exp userid=用户名/密码@数据库实例名 file=备份文件名.dmp tables=表名 ``` 其中,`用户名`是数据库用户的名称,`密码`是用户的密码,`数据库实例名`是Oracle数据库实例名,`备份文件名.dmp`是备份文件的名称,`表名`是需要备份的表的名称。 在备份过程中,如果提示“是否导出long列”,选择“是”,将long类型数据导出到单独的文件中。 3. 在恢复之前,需要先手动创建表。可以使用如下命令: ``` create table 表名(列定义); ``` 4. 在表中插入数据。如果表中有long类型的列,需要使用如下命令: ``` insert into 表名(列名) values (empty_clob()); ``` 然后,使用如下命令将long类型数据插入到表中: ``` declare v_clob clob; begin dbms_lob.createtemporary(v_clob, false); dbms_lob.fileopen(v_clob, 'long类型数据文件路径', 'r'); dbms_lob.loadfromfile(v_clob, 'long类型数据文件路径', dbms_lob.getlength(v_clob)); dbms_lob.fileclose(v_clob); update 表名 set 列名 = v_clob where ...; dbms_lob.freetemporary(v_clob); end; ``` 其中,`long类型数据文件路径`是导出long类型数据的文件路径。 5. 使用imp工具恢复数据,命令格式如下: ``` imp userid=用户名/密码@数据库实例名 file=备份文件名.dmp full=y ``` 在恢复过程中,如果提示“是否导入long列”,选择“是”,将long类型数据导入到表中。 通过以上步骤,可以备份和恢复含有大对象类型的表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值