使用PB从Oracle读取并保存BLOB图片

需积分: 9 6 下载量 78 浏览量 更新于2024-09-07 收藏 2KB TXT 举报
本文档主要介绍了如何使用PB(Progress 4GL)语言来读取Oracle数据库中的BLOB(二进制大对象)数据,特别是图像文件,如.jpg或.bmp格式。PB在处理数据库操作时,提供了便捷的方法来处理大型数据块,包括存储、读取和写入。 首先,程序通过`GetFileOpenName`函数获取用户选择的图片文件路径(`pname`)和文件名(`fname`),并设置了一些文件类型过滤规则。如果用户未选择文件,则程序返回。 接着,通过`SQLCA.AutoCommit=True`确保事务在读取BLOB数据时处于可提交状态。然后,计算存储文件的长度(`ll_len`),使用`FileOpen`函数打开该文件,并将其内容读取到内存中的`lb_fn`变量。这个过程是按32765字节(Oracle通常每行最多32767个字符)进行分块处理的,将读取的数据添加到`lb_file`中。 在数据库操作部分,利用SQL查询从`pidtest`表中获取特定ID(例如1)对应的BLOB列`blobcol`的值,并将其赋值给`lb_pict`,准备存储或显示图片。这里使用了`setpicture`方法将BLOB数据设置为控件`p_1`的图片属性。 此外,文档还展示了如何将读取到的BLOB图片保存到本地。通过`getfilesavename`函数获取保存路径和文件名,然后用循环结构逐块写入文件。在写入过程中,同样遵循32765字节的分块策略,使用`filewrite`函数,并利用`blobmid`函数对BLOB进行分段写入,确保写入的正确性。 最后,文档提到了一个额外的操作,即使用`DECLARE C1 CURSOR FOR`语句声明一个游标,用于从`fare_daily_view`表中根据条件(如`aln_cd`和`cargo_aln_fare`)查询数据。这部分内容与最初的主题——读取Oracle照片——关联不大,但可能是后续数据分析或报表生成的部分。 总结来说,该文档详细介绍了如何使用PB在Oracle环境中处理BLOB图片数据,涉及文件操作、数据库查询和BLOB数据的读取和写入技巧。这对于在PB编程环境中与Oracle数据库交互,特别是处理图像文件的场景非常实用。