ODAC应用技巧(二)使用BLOB及CLOB数据类型

ODAC 组件支持 Oracle 8 的 BLOB 和 CLOB 数据类型。你可以使用 TOraQuery 组件来获取 LOB 字段的值,使用同样的方法,你也可以获取  LONG 或 LONG ROW 字段。当你需要使用 SQL DML 及 PL/SQL 语句存取这些字段时,你就会发现 LOB 数据类型的用法有明显的不同。

BLOB 和 CLOB 数据类型通过 LOB 定位器(指定数据地址) 存储在表列中;实际的 BLOB 和 CLOB 数据存储在独立的表空间中。与之不同的是,LONG 或 LONG RAW 类型存储在数据库中,表中存放着它们的实际值。

当存取 LOB 列时,返回的是定位器,而不像 LONG 或 LONG RAW 数据类型那样返回它的实际值。

例如,分析这个表的定义:

CREATE TABLE ClobTable (
Id NUMBER,
Name VARCHAR2(30),
Value CLOB
)

如果我们不通过值参数初始化 LOB 定位器, Oracle 将不允许使用下面的语句来更新数据表:

UPDATE ClobTable
SET
Name = :Name,
Value = :Value

WHERE
Id = :Id

要初始化 LOB 定位器,你必须使用 EMPTY_BLOB 或 EMPTY_CLOB Oracle 函数。要返回初始化后的定位器,应在同样的语句中使用 RETURNING 子句。例如:

UPDATE ClobTable
SET
Name = :Name,
Value = EMPTY_CLOB()
WHERE
Id = :Id
RETURNING
Value
INTO
:Value

ODAC 写 LOB 数据到 Oracle 且返回初始值字段,需使用:值参数。

存储过程允许自动初始化 LOB 值,方法如下:

CREATE OR REPLACE
PROCEDURE ClobTableUpdate (p_Id NUMBER, p_Name VARCHAR2,
p_Value OUT CLOB)
is
begin
UPDATE ClobTable
SET 
Name = p_Name,
Value = EMPTY_CLOB()
WHERE
Id = p_Id
RETURNING
Value
INTO
p_Value;
end;

时间: 2024-10-29 23:13:46

ODAC应用技巧(二)使用BLOB及CLOB数据类型的相关文章

ODAC应用技巧(四)使用VARRAY数据类型

在使用对象时建议使用数组.但在你需要在数据集中使用大数组时可能会出现一些问题.比如,当为 ODAC 的一个字段创建大量数组时,也会创建大量的 TField 字段,这会导致程序的性能大大降低. 因此,ODAC 限制仅能为字段创建 1000 个成员.但不管怎样,你都可以使用 TOraArray 对象来存取所有的成员.当然,你也可以通过其它方法来实现.比如,设置 TOraQuery.SparseArray 为 True 并且通过 TArrayField 对象来存取数组成员. 如果创建了下面的类型: C

JDBC中操作Blob、Clob等对象

很多网友都不知道JDBC中如何操作Blob.Clob等对象,其实这是不难的!操作这些对象就象操作其它String.int一样.不信!你就看下面的文章.下面的例子会带你首先创建包含Clob.Blob对象的数据库的表,然后写入这些对象,最后再读取并操作这些对象! 一.关于Derby www.open-open.com是这样介绍Derby的"Apache Derby 是一种高质量的.纯 Java 的嵌入式关系数据库引擎,IBM 最近已将其捐献给开放源码社区.Derby 数据库基于文件系统,具有高度的可

【Silverlight】Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPa

[Silverlight]Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPanel 在Bing Maps Silverlight Control中以及为我们提供了地图图钉控件Pushpin,我曾经在<使用图钉层(Pushpin layer)及地图图层(MapLayer)>一文中介绍过他的使用方法,本篇主要介绍如何自定义图钉标注控件以及对他的一些扩展,比如实现图钉的动态ToolPanel. 关于图钉的UI外观的设计这里就不详细介绍了,通过Blend可以快速的构建UI界面.首

hibernate3学习笔记(十四)|Blob、Clob

在Hibernate中,可以直接对Blob.Clob作映射. DDL如下: 1.CREATE TABLE user (2. id INT(11) NOT NULL auto_increment PRIMARY KEY,3. name VARCHAR(100) NOT NULL default '',4. age INT,5. photo BLOB,6. resume TEXT7.); 注意:由于BLOB字段大小不可预计,有时需要增大BLOB字段的大小,可在数据库中改用MEDIUMBLOB甚至LO

使用Office2010截图、抠图技巧二:移除图片中的背景

技巧二:移除图片中的背景 对于已插入Word文档的图片,我们可以很方便的去除图片中的背景,这样就不需要动用庞大的photoshop,更妙的是还可以添加或去除水印. 选择图片,切换到"PictureTools"选项卡,可以在这里发现名为"BackgroundRemoval"的按钮,单击 "BackgroundRemoval"按钮,很快就可以把想要的图片抠出来,是不是很神奇?

JavaScript 七大技巧(二)_javascript技巧

上篇文章给大家介绍了JavaScript 七大技巧(二),写JavaScript代码已经很久了,都记不起是什么年代开始的了.对于JavaScript这种语言近几年所取得的成就,我感到非常的兴奋;我很幸运也是这些成就的获益者.我写了不少的文章,章节,还有一本专门讨论它的书,然而,我现在依然能发现一些关于这种语言的新知识.下面的描述的就是过去让我不由得发出"啊!"的感叹的编程技巧,这些技巧你应该现在就试试,而不是等着未来的某个时候偶然的发现它们. var band = { "na

oracle-Oracle的clob数据类型

问题描述 Oracle的clob数据类型 我的需求是将页面上的大量文字直接插入到数据库中, 建了一个aa表,content1是clob数据类型,从网上找了一些资料,总结出了下图中的两种写法, 但是clob类型的字段总是插不进去数据,请问 1.问题出在哪? 2.如果我这种写法有问题,正确的应该怎么写? 解决方案 顶起啊,没人用过这个吗? 解决方案二: 参考不可忽略的Oracle自动类型转换 将CLOB转为字符类型或将BLOB转为RAW类型的时候,如果被转换的类型长度比目标类型长,那么会出错,其实,

提高ASP性能的22个技巧(二)

技巧|性能 技巧12:将常用数据复制到脚本变量中  当访问ASP中的COM对象时,应该将常用对象数据复制到脚本变量中.着将减少COM方法调用.而COM方法调用代价相对比访问脚本数据更高.当访问Collection和 Dictonary对象时,这项技术也能消减高昂的查询代价.  通常,当准备不止一次访问一个对象数据时,应该将这个数据放当一个脚本对象中. 这项优化的主要目标是Request变量(Form和QueryString变量).例如,你的站点传递一个叫UserID的QueryString变量,

几个C#编程的小技巧 (二)

编程|技巧 一.判断文件或文件夹是否存在使用System.IO.File,要检查一个文件是否存在非常简单: bool exist = System.IO.File.Exists(fileName); 如果需要判断目录(文件夹)是否存在,可以使用System.IO.Directory:bool exist = System.IO.Directory.Exists(folderName); 二.使用delegate类型设计自定义事件在C#编程中,除了Method和Property,任何Class都可