PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy rozszerzenie języka JavaScript plv8 może wywoływać biblioteki innych firm?

Język plv8 jest zaufany, więc nie ma możliwości załadowania czegokolwiek z systemu plików. Możesz jednak załadować moduły z bazy danych.

Utwórz tabelę z kodem źródłowym modułu i załaduj ją za pomocą select i eval() . Prosty przykład ilustrujący pomysł:

create table js_modules (
    name text primary key,
    source text
);

insert into js_modules values
('test', 'function test() { return "this is a test"; }' );

Załaduj moduł z js_modules w swojej funkcji:

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) 

Możesz znaleźć bardziej rozbudowany przykład z eleganckim require() funkcja w tym poście:Głębokie zanurzenie w PL/v8 . . Jest oparty na plv8.start_proc (zobacz też krótki przykład ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć migrację rails, aby usunąć/zmienić precyzję i skalę dziesiętną?

  2. PRZESUNIĘCIE vs. ROW_NUMBER()

  3. Blok anonimowego kodu PL/pgSQL

  4. Jaki jest najłatwiejszy sposób na zwrócenie zestawu rekordów z procedury składowanej PostgreSQL?

  5. Wdrażanie i zarządzanie PostgreSQL 11:Nowość w ClusterControl 1.7.1