文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (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 預存程式也可以將欄位值作為引數。可以在 SQL 表達式中任何可以合法使用任何其他函數的地方調用 JavaScript 預存函數,例如在 WHEREHAVINGORDER BYJOIN 子句中。它們也可以在觸發程序或事件定義的主體中調用,儘管定義本身必須以 SQL 撰寫。這些功能的一些範例可以在本節稍後找到(請參閱 第 27.3.9 節,「JavaScript 預存程式範例」)。