plv8言語は信頼されているため、ファイルシステムから何かをロードする方法はありません。ただし、データベースからモジュールをロードできます。
モジュールのソースコードを含むテーブルを作成し、select
を使用してロードします およびeval()
。アイデアを説明する簡単な例:
create table js_modules (
name text primary key,
source text
);
insert into js_modules values
('test', 'function test() { return "this is a test"; }' );
js_modules
からモジュールをロードします あなたの関数で:
create or replace function my_function()
returns text language plv8 as $$
// load module 'test' from the table js_modules
var res = plv8.execute("select source from js_modules where name = 'test'");
eval(res[0].source);
// now the function test() is defined
return test();
$$;
select my_function();
CREATE FUNCTION
my_function
----------------
this is a test
(1 row)
エレガントなrequire()
を使用したより複雑な例を見つけることができます この投稿の機能: PL/v8の詳細。
。これはplv8.start_proc
に基づいています (こちらの短い例
もご覧ください 。