问题
I'm trying to use plv8 to write postgres functions. Now I would like to use the pgcrypt library in a way like this:
CREATE OR REPLACE FUNCTION v01.myfunction(arg json)
RETURNS json AS
$BODY$
var res;
res = obj.crypt(arg.password, res);
plv8.elog(NOTICE, res);
...
$BODY$
LANGUAGE plv8;
Where crypt comes with the pgcrypt library and is find in another schema. But if running I get the error:
ERROR: ReferenceError: obj is not defined
Any idea? Thanks!
回答1:
It's possible to call other PLV8 functions in other schemas, yes.
You're not calling the function right though. Use
var myFunction = plv8.find_function("schemaName.functionName")
var result = myFunction();
AFAIK you can only call other PLV8 functions this way, not say PLPGSQL.
You can use plv8.execute("select someFunctionInAnotherLanguage()")
回答2:
Ok, I found it:
var pp = plv8.execute("SELECT obj.crypt($1,$2)",[arg.password, cpw]);
easy :-)
来源:https://stackoverflow.com/questions/30627205/its-possible-to-call-functions-in-another-schema-from-within-plv8-functions