Oracle Database MLE 文档


这个 Oracle Database Multilingual Engine 测试版包括预构建的 VirtualBox 软件设备。下载虚拟设备 (.ova) 文件后,将其导入 VirtualBox 并启动虚拟机。该虚拟机运行 Oracle Linux 7.2,并预先安装了 Oracle Database Multiligual Engine。数据库在虚拟设备的引导过程中启动。虚拟机的主要用户是用户 oracle(密码:oracle)。

Virtualbox 映像包括有关如何编写 JavaScript 函数并将其作为存储过程和用户定义函数 (UDF) 进行部署和调用的文档。以 oracle 用户的身份登录后,可以通过单击桌面上的 Start Tutorial Browser 图标访问该文档。下面,我们通过展示如何部署 JavaScript“Hello World”UDF 以及如何从 SQL 调用它来概要介绍工作流。

实现 JavaScript 函数


Oracle Database MLE 要求所有 JavaScript 扩展作为 JavaScript 模块实现,这是 JavaScript 开发人员的通常做法。Oracle Database MLE 支持以 UMD 模块形式编写的模块。这是很常见的模块编写模式,可以通过各种工具(如 browserify)生成。但是,编写可以由 Oracle Database MLE 加载的模块的最简单的方法是使用 Common-JS,并将可从 Oracle 数据库调用的函数指定为“module.exports”的属性,如下所示:

module.exports.helloworld = function () { return "Hello World"; }


将此文件保存为 helloworld.js

使用 TypeScript 声明签名


下一步是为所有导出的函数提供一个类型声明。由于我们在示例中仅导出一个函数,因此我们针对 helloworld 的输入和输出类型提供了一个规范。这个规范被编写成一个 TypeScript 声明文件,声明函数无输入,并生成一个字符串作为输出。

export function helloworld() : string;


将此文件保存为 helloworld.d.ts

部署到数据库


这个规范是连接静态类型的 SQL 数据库世界与动态类型的 JavaScript 世界所必需的桥梁。有了实现和类型规范之后,我们就可以使用部署工具 dbjs 将脚本部署到数据库中。

shell> dbjs deploy helloworld.js -u myuser -p mypasswd -c mydb:1521/globaldbname


从 SQL 调用 UDF


为了使用这个脚本,我们使用喜爱的 DB 连接器(如 SQL*Plus)连接到数据库,并使用一个调用函数 helloworld 的查询。

sql> select helloworld() from dual;