sql >> Database teknologi >  >> RDS >> PostgreSQL

Kan plv8 JavaScript-sprogudvidelse kalde tredjepartsbiblioteker?

Plv8-sproget er tillid til, så der er ingen måde at indlæse noget fra filsystemet. Du kan dog indlæse moduler fra databasen.

Opret en tabel med kildekoden til et modul og indlæs den ved hjælp af select og eval() . Et simpelt eksempel til at illustrere ideen:

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

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

Indlæs modulet fra js_modules i din funktion:

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) 

Du kan finde et mere udførligt eksempel med en elegant require() funktion i dette indlæg:A Deep Dive into PL/v8 . . Den er baseret på plv8.start_proc (se også et kort eksempel her ).



  1. Oprettelse af midlertidig tabel inde i lagret procedure

  2. Hvorfor kan jeg ikke indsætte 10 cifre, når min kolonne er INT(10)

  3. Enhver måde at undgå en filsortering, når ordre efter er forskellig fra hvor-klausulen?

  4. Undervælg i oracle