简体   繁体   English

从Node.js读取Oracle中的BLOB

[英]Read a BLOB in Oracle from Node.js

I've connected my web server node.js to Oracle, and I've already select some data from de database. 我已经将Web服务器node.js连接到Oracle,并且已经从数据库中选择了一些数据。

There is no problem when I select data types like string or int, but I need to read some BLOBs too (called PARAMETERS in my database). 当我选择字符串或int之类的数据类型时没有问题,但是我也需要读取一些BLOB(在我的数据库中称为PARAMETERS)。

  • First problem: The size of the BLOBs stored in the data base is 37000 bytes, but the size max of the buffer is 2000 -->Solution : I've only selected the first 2000 bytes 第一个问题:存储在数据库中的BLOB的大小为37000字节,但缓冲区的最大大小为2000->解决方案:我只选择了前2000个字节

  • Second problem: The result is an array, but I think that it's empty or I'm not able to read the data inside --> Solution? 第二个问题:结果是一个数组,但是我认为它为空,或者我无法读取内部数据->解决方案?

Does anyone know how to read a BLOB with the node.js-Oracle module? 有谁知道如何使用node.js-Oracle模块读取BLOB?

Thank you very much! 非常感谢你!

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();
               }
});

The result is : 结果是:

Connected to Oracle 连接到Oracle
Parameters = [object object] 参数= [对象对象]
name = [{NAME: ARD}] 名称= [{{NAME:ARD}]

You shall update version of your oracle module to the latest one - 0.3.4 It has better support for BLOBs. 您应该将oracle模块的版本更新为最新版本-0.3.4。它具有对BLOB的更好支持。

You can do it as following: 您可以按照以下步骤进行操作:

npm update oracle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM