2

我正在尝试使用适用于 NodeJS-4.2.2、Express (4.13.3) 的 Oracle Driver (1.4.0) 从 Oracle DB 中提取数据。

我能够将输出写入流(文件),但无法将其分配给变量对象。下面是代码片段。无论如何,我将 clob 字段输出分配给 var ?

{
                    if (err) { console.error(err.message); return; }
                    if (result.rows.length === 0) { console.log("No results"); return; }

                    var clobe = "";
                    var lob = result.rows[2][1];
                    if (lob === null) { console.log("BLOB was NULL"); return; }

                   // lob.setEncoding('utf8');
                    lob.on(
                        'end',
                        function()
                        {
                            console.log("lob.on 'end' event");
                            res.end();
                        });
                    lob.on(
                        'close',
                        function()
                        {
                            console.log("lob.on 'close' event");
                            connection.release(function(err) {
                                if (err) console.error(err);
                            });
                        });
                    lob.on(
                        'error',
                        function(err)
                        {
                            console.log("lob.on 'error' event");
                            console.error(err);
                        });
                    lob.on('data', function (chunk) { clobe += chunk; console.log("Added chunk("+chunk.length+") to clob("+clobe.length+")");});


                    res.writeHead(200, {'Content-Type': 'application/json' });

                    lob.pipe(res);
                }
4

2 回答 2

6

利用

  oracledb.fetchAsString = [ oracledb.CLOB ];

并且您的 CLOB 将作为字符串检索

文档

于 2019-04-08T06:34:13.630 回答
0
    if (lob === null) { 
      console.log("CLOB was NULL");
      return;
    }
    var clob = "";
    lob.setEncoding('utf8');  // we want text, not binary output

    lob.on('end', function() {
      console.log("lob.on 'end' event ", clob);
    });
    lob.on('close', function() {
      console.log("lob.on 'close' event");
    });
    lob.on('error', function(err) {
      console.log("lob.on 'error' event");
      console.error(err);
    });
    lob.on('data', function (chunk) { 
      clob += chunk;
      console.log("Added chunk("+chunk.length+") to clob("+clob.length+")");
    });
于 2016-01-20T15:29:51.700 回答