plv8: JavaScript Language
The plv8
extension allows you use JavaScript within Postgres.
Overview#
While Postgres natively runs SQL, it can also run other "procedural languages".
plv8
allows you to run JavaScript code - specifically any code that runs on the V8 JavaScript engine.
It can be used for database functions, triggers, queries and more.
Enable the extension#
- Go to the Database page in the Dashboard.
- Click on Extensions in the sidebar.
- Search for "plv8" and enable the extension.
Create plv8
functions#
Functions written in plv8
are written just like any other PostgreSQL functions, only
with the language
identifier set to plv8
.
_10create or replace function function_name()_10returns void as $$_10 // V8 JavaScript_10 // code_10 // here_10$$ language plv8;
You can call plv8
functions like any other Postgres function:
_10select function_name();
Examples#
Scalar functions#
A scalar function is anything that takes in some user input and returns a single result.
_10create or replace function hello_world(name text)_10returns text as $$_10_10 let output = `Hello, ${name}!`;_10 return output;_10_10$$ language plv8;
Executing SQL#
You can execute SQL within plv8
code using the plv8.execute
function.
_10create or replace function update_user(id bigint, first_name text)_10returns smallint as $$_10_10 var num_affected = plv8.execute(_10 'update profiles set first_name = $1 where id = $2',_10 [first_name, id]_10 );_10_10 return num_affected;_10$$ language plv8;
Set-returning functions#
A set-returning function is anything that returns a full set of results - for example, rows in a table.
_11create or replace function get_messages()_11returns setof messages as $$_11_11 var json_result = plv8.execute(_11 'select * from messages'_11 );_11_11 return json_result;_11$$ language plv8;_11_11select * from get_messages();
Resources#
- Official
plv8
documentation - plv8 GitHub Repository