plv8扩展允许你在Postgres中使用JavaScript。

概述

虽然Postgres原生运行SQL,但它也可以运行其他 “程序语言”。 plv8允许你运行JavaScript代码-特别是任何在V8 JavaScript引擎上运行的代码。

它可以用于数据库函数、触发器、查询等。

使用方法

启用扩展

创建plv8函数

plv8编写的函数和其他PostgreSQL函数一样,只是 语言标识符设置为plv8

  create or replace function function_name()
returns void as $$
    // V8 JavaScript
    // code
    // here
$$ language plv8;
  

你可以像其他Postgres函数一样调用plv8函数:

示例

标量函数

一个标量函数是接受某些用户输入并返回单个结果。

  create or replace function hello_world(name text)
returns text as $$

    let output = `Hello, ${name}!`;
    return output;

$$ language plv8;
  

正在执行SQL

可以使用plv8.execute函数plv8代码中执行SQL。

  create or replace function update_user(id bigint, first_name text)
returns smallint as $$

    var num_affected = plv8.execute(
        'update profiles set first_name = $1 where id = $2',
        [first_name, id]
    );

    return num_affected;
$$ language plv8;
  

设置返回函数

一个set-returning函数可以返回一整套结果–例如,表中的行。

  create or replace function get_messages()
returns setof messages as $$

    var json_result = plv8.execute(
        'select * from messages'
    );

    return json_result;
$$ language plv8;
  

资源