文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  存储对象  /  JavaScript 存储程序

27.3 JavaScript 存储程序

MySQL 9.0 支持使用 JavaScript 编写的存储例程,如下面的简单示例所示

mysql> CREATE FUNCTION add_nos(arg1 INT, arg2 INT) 
    ->   RETURNS INT LANGUAGE JAVASCRIPT AS 
    ->   $$
    $>     return arg1 + arg2
    $>   $$
    ->   ;
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT add_nos(12,52);
+----------------+
| add_nos(12,52) |
+----------------+
|             64 |
+----------------+
1 row in set (0.00 sec)
注意

支持 JavaScript 存储例程需要安装多语言引擎 (MLE) 组件。有关安装和配置 MLE 组件的信息,请参阅 第 7.5.6 节“多语言引擎组件 (MLE)”

JavaScript 存储程序可以与其他用户创建的和 MySQL 原生的存储程序一起使用(受本节其他地方描述的限制),也可以与 MySQL 系统和用户变量一起使用。我们可以在此处看到其中的一些内容,使用在前面的示例中创建的 add_nos() 函数

mysql> SET @x = 2;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @x;
+------+
| @x   |
+------+
|    2 |
+------+
1 row in set (0.00 sec)

mysql> SELECT @@server_id;
+-------------+
| @@server_id |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT add_nos(POW(2,@x), 1);
+-----------------------+
| add_nos(POW(2,@x), 1) |
+-----------------------+
|                     5 |
+-----------------------+
1 row in set (0.01 sec)

mysql> SELECT POW(add_nos(@x, @@server_id), add_nos(@x, 1));
+-----------------------------------------------+
| POW(add_nos(@x, @@server_id), add_nos(@x, 1)) |
+-----------------------------------------------+
|                                            27 |
+-----------------------------------------------+
1 row in set (0.01 sec)

可以使用 CALL 调用 JavaScript 存储过程,与 SQL 存储过程一样。

JavaScript 存储程序也可以将列值作为参数。JavaScript 存储函数可以在 SQL 表达式中任何可以使用其他函数的地方调用,例如 WHEREHAVINGORDER BYJOIN 子句。它们也可以在触发器或事件定义的主体内调用,尽管定义本身必须用 SQL 编写。本节后面将提供一些这些功能的示例(请参阅 第 27.3.9 节“JavaScript 存储程序示例”)。