gpt4 book ai didi

sql - PL/Python 错误 : NameError: global name 'name of user-defined function' is not defined

转载 作者:行者123 更新时间:2023-11-29 12:13:15 25 4
gpt4 key购买 nike

我正在运行 Postgres 9.3,我正在尝试创建一个调用用户定义的 sql 函数的 PL/Python 函数,但是在使用 SELECT * FROM f2(TEXT1, TEXT2) 调用该函数后我收到以下错误消息:

ERROR: NameError: global name 'f1' is not defined
SQL state: XX000
Context: Traceback (most recent call last):
PL/Python function "f2", line 1, in <module>
print f1()
PL/Python function "f2"

sql 函数如下所示:

CREATE FUNCTION f1(TEXT, TEXT) RETURNS SETOF some_tbl AS $$
SELECT col1, col2, col3
FROM some_other_tbl
WHERE col1=$1 AND col2=$2
GROUP BY col1;
$$ LANGUAGE 'sql';

PL/Python 函数如下:

CREATE FUNCTION f2(TEXT, TEXT) RETURNS SETOF some_tbl
AS $$ return f1() $$
LANGUAGE 'plpython2u';

所以,似乎在 f2 中找不到 f1,尽管我可以自己调用它。

对此有任何建议吗?谢谢

最佳答案

这样不行。 SQL 函数不能作为 Python 函数直接调用。 (这可能是一个很好的功能,但没有实现任何此类功能。)如果你想从 PL/Python 调用 SQL 函数,你需要做

plpy.execute("SELECT f1(...)")

等等

关于sql - PL/Python 错误 : NameError: global name 'name of user-defined function' is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19967781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com