可以从 plv8 函数中调用另一个模式中的函数吗?
It's possible to call functions in another schema from within plv8 functions?
我正在尝试使用 plv8 编写 postgres 函数。现在我想像这样使用 pgcrypt 库:
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;
其中 crypt 随 pgcrypt 库一起提供并在另一个模式中找到。但是如果 运行 我得到错误:
ERROR: ReferenceError: obj is not defined
有什么想法吗?谢谢!
可以在其他模式中调用其他 PLV8 函数,是的。
不过您没有正确调用该函数。使用
var myFunction = plv8.find_function("schemaName.functionName")
var result = myFunction();
据我所知,你只能这样调用其他 PLV8 函数,而不是 PLPGSQL。
您可以使用plv8.execute("select someFunctionInAnotherLanguage()")
好的,我找到了:
var pp = plv8.execute("SELECT obj.crypt(,)",[arg.password, cpw]);
简单 :-)
我正在尝试使用 plv8 编写 postgres 函数。现在我想像这样使用 pgcrypt 库:
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;
其中 crypt 随 pgcrypt 库一起提供并在另一个模式中找到。但是如果 运行 我得到错误:
ERROR: ReferenceError: obj is not defined
有什么想法吗?谢谢!
可以在其他模式中调用其他 PLV8 函数,是的。
不过您没有正确调用该函数。使用
var myFunction = plv8.find_function("schemaName.functionName")
var result = myFunction();
据我所知,你只能这样调用其他 PLV8 函数,而不是 PLPGSQL。
您可以使用plv8.execute("select someFunctionInAnotherLanguage()")
好的,我找到了:
var pp = plv8.execute("SELECT obj.crypt(,)",[arg.password, cpw]);
简单 :-)