【问题标题】:Read a BLOB in Oracle from Node.js从 Node.js 读取 Oracle 中的 BLOB
【发布时间】:2013-10-25 22:35:27
【问题描述】:

我已经将我的 web 服务器 node.js 连接到 Oracle,并且我已经从 de 数据库中选择了一些数据。

当我选择字符串或int等数据类型时没有问题,但我也需要读取一些BLOB(在我的数据库中称为PARAMETERS)。

  • 第一个问题:存储在数据库中的 BLOB 大小是 37000 字节,但是缓冲区的最大大小是 2000 -->解决方案:我只选择了前 2000 字节

  • 第二个问题:结果是一个数组,但是我认为它是空的或者我无法读取里面的数据 --> 解决办法?

有人知道如何使用 node.js-Oracle 模块读取 BLOB 吗?

非常感谢!

db.connect({ "hostname": "xxx", "user":"xx", "password": "xx", "database": "xx"},     function(err, connection) {
            if (err) {
                return console.log("CONNECTION ERROR: " + err);
            }
            else{
                console.log('Connected to Oracle ');
                connection.execute('SELECT utl_raw.cast_to_varchar2(dbms_lob.substr(PARAMETERS,2000,1)) FROM records WHERE records.id = 1', [], function (err, rows) {
                        if ( err ) {
                            console.log('error: ' + err);
                        }
                        console.log('Parameters= ' + rows);
                        socket.emit('response:record', {'record': rows});
                 });
                 connection.execute('SELECT records.name FROM records WHERE records.id = 1', [], function (err, rows) {
                        if ( err ) {
                            console.log('error: ' + err);
                        }
                        socket.emit('response:name', {'record': rows});
                        console.log('name= ' + rows);
                 });
               connection.close();
               }
});

结果是:

连接到 Oracle
参数 = [对象对象]
名称 = [{NAME: ARD}]

【问题讨论】:

  • 您使用的是哪个模块(oracle 或 db-oracle)?

标签: javascript oracle node.js blob


【解决方案1】:

您应将oracle 模块的版本更新到最新版本 - 0.3.4 它对 BLOB 有更好的支持。

你可以这样做:

npm update oracle

【讨论】:

  • 我已经更新了我的 oracle 模块,但我的 blob 仍然存在一些问题...现在,我正在尝试提取从 Oracle 调用存储过程的 blob(OCCIBLOB 类型)(调用读BasicBolb)。此方法在 outparams.js 中定义(请参阅 github.com/feedhenry/node-oracle/blob/master/test/outparams.js),但我没有达到预期的结果。事实上,每次我执行调用时,我都会以随机方式看到不同的结果......任何人都知道为什么 OOCIBLOB 它是唯一没有在 outparmas.js 中进行验证测试的方法?也许 OCCIBLOB 尚未经过验证?
  • 您指的是一个分叉的、6 个月大的原始模块版本:github.com/nearinfinity/node-oracle 您可以使用原始模块吗?检查您拥有的模块的版本 - 它应该是 oracle@0.3.4。它支持我在答案中提到的 BLOB
  • 是的,我使用的是 0.3.4。并且由于这一点,我不再获得空结果。但是,每次执行该过程时,我都会达到不同的值...
猜你喜欢
  • 2021-06-24
  • 2023-03-31
  • 2012-01-16
  • 2016-07-24
  • 2012-04-07
  • 2021-01-21
  • 2014-11-01
  • 2017-06-14
  • 2014-10-02
相关资源
最近更新 更多