oracle不允许长度为0的列_Node-oracledb 4.0 发布,添加 Oracle 高级队列 API

29fd50de38668f9e328f86ba96babb3c.png

node-oracledb 4.0 已经发布,node-oracledb 是甲骨文公司官方发布的 Oracle 的 Node.js 驱动。此版本的新特性主要是包括查询和绑定命名的Oracle类型、Oracle 高级队列 API。具体更新内容如下:

实现重构

虽然模块仍然是调用 Oracle 客户端库的二进制层的 JavaScript 包装器,但是二进制层现在使用 Node.js 的 N-API 接口而不是 NAN。NAN 是起始的Node.js C++ 包装器,用于在更新 V8 引擎时为模块提供可移植性。使用更新的 N-API 接口带来了许多好处:

  • N-API 有自己的 API 版本化方法,允许构建一个 node-oracledb 二进制文件(每个操作系统体系结构),可以使用当前和更高的 Node.js 版本
  • npm 下载包的大小是 node-oracledb 3.1 包的四分之一,因为该包不需要包含每个 Node.js 版本的二进制文件
  • node-oracledb 代码现在是纯 C,而不是 C++,所以 C 编译器需要构建的模块不再需要 C++ 11 的支持,这在一些较旧的环境中构建更容易

支持查询和绑定命名的 Oracle 类型

这使得 Node.js 成为一个很好的使用 SQL 或 PL/SQL 用户定义类型的环境,或者是在处理诸如 Oracle 的空间特性所使用的预先创建的类型时使用的一个很好的环境。

例如,创建一些类型和一个表:

CREATE TYPE dbharvesttype AS VARRAY(10) OF VARCHAR2(20)/CREATE TYPE dbfarmtype AS OBJECT ( farmername VARCHAR2(20), harvest dbharvesttype)/CREATE TABLE farmtab (id NUMBER, farm dbfarmtype);

在 node-oracledb 4.0 中,可以映射 JavaScript 对象以插入列 farm:

// A JavaScript object automatically mapped to the DBFARMTYPE object.// The case of the properties matters.const newFarm = { FARMERNAME: 'McDonald', HARVEST: [ 'corn', 'wheat', 'barley' ]}; await connection.execute( `INSERT INTO farmtab (id, farm) VALUES (:id, :f)`, { id: 1, f: { type: 'DBFARMTYPE', // name of the top level DB type, case sensitive val: newFarm } });

查询 FARMTAB 返回一个 DbObject,它在 node-oracledb 4.0 中是新的:

const result = await connection.execute(`SELECT farm FROM farmtab WHERE id = 1 `); // a DbObject for the named Oracle type:const farm = result.rows[0][0]; // The whole object:// [MYUSER.DBFARMTYPE] { FARMERNAME: 'MacDonald', HARVEST: [ 'corn', 'wheat', 'barley' ] }console.log(farm); // Objects can be stringified:// {"FARMERNAME":"MacDonald
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值