AnySQL中的特色功能介绍(八) -- 更新LONG/LOB列

    常看到有人问如何更新LOB或LONG类型的字段中的内容, 在SQL*Plus中是不容易的, 在AnySQL小工具中, 除了可以用LOB类型的主机变量, 我设计了LOB和LOBIMP命令来对这些数据类型进行查询操作, 这些命令可以将运行AnySQL的机器(非服务器端)上的文件上传更新到LONG/LOB字段中.

    LOB命令语法, 这里面query应当只返回一行及一列(LONG或LOB类型), 在SELECT中应当加上"FOR UPDATE"子句表示锁定LOB进行更新.

Usage:
  LOB query << file
Note :
  << mean import a file to blob/clob field, the query
     should include the for update clause

    LOBIMP命令语法, 这里面query应当只返回两列, 第一列为文件名, 第二列为LONG或LOB字段, 在SELECT中应当加上"FOR UPDATE"子句表示锁定LOB进行更新.

Usage:
  LOBIMP query
Note :
  Query should return tow column as following:
  col1 : CHAR or VARCHAR specify the filename.
  col2 : blob/clob field.

    下面来看一下例子中用到的表:

ASQL> SELECT FNAME FROM T_LOB;

FNAME
-----
a.txt
otop

2 rows returned.

ASQL> desc t_LOB;

NO# NAME              NULLABLE TYPE        
--- ----------------- -------- ------------
  1 FNAME                      VARCHAR2(20)
  2 FTEXT                      CLOB

    我们将"FTEXT"字段更新成空的CLOB值, 在使用这两个命令时, 要确保LOB字段中的值不为NULL, 如下所示:

ASQL> update t_lob set ftext=empty_clob();

2 rows affected.

ASQL> commit;

Commit Succeed.

    下面用LOB命令来更新一个值:

ASQL> LOB SELECT FTEXT FROM T_LOB WHERE FNAME='a.txt' FOR UPDATE << a.txt;

Command succeed.

ASQL> commit;

Commit Succeed.

    用LOBIMP的例子:

ASQL> LOBIMP SELECT FNAME,FTEXT FROM T_LOB FOR UPDATE;

File a.txt loaded.
File otop loaded.
Command succeed.

ASQL> commit;

Commit Succeed.

    现在检查一下数据库中的值是不是已经被更新了? 这个功能请使用Oracle 10g中带的JDBC驱动(ojdbc14.jar).

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • What you have said about this is very interesting.
  • 你说的很有意思.
  • I cannot agree with you on this point.
  • 在这一点上, 我不能同意你的意见.
  • You've got the point.
  • 你抓住了问题的实质.
  • That's the point.
  • 这正是问题的关键.
  • The whole class is in a heated discussion.
  • 全班同学正在热烈讨论.