我想根据表“查询”(l_query query%ROWTYPE)创建一个变量,但是我得到了这样的消息:invalid type name "query%ROWTYPE"我也尝试使用完全限定的表名l_query dbname.public.query%ROWTYPE,但是它对我没有帮助。
CREATE OR REPLACE FUNCTION somefunc()
RETURNS int AS $$
DECLARE
l_res dbname.public.query%ROWTYPE;
BEGIN
return 1;
END;
$$ LANGUAGE plpgsql;PS:我确实有表查询。我查过几次了。我只在生产服务器上有这个错误。在本地,我没有遇到任何问题
versionPostgreSQL 9.2.4 on x86_64未知-linux-gnu,由gcc (Debian 4.7.2-5) 4.7.2,64位编译
发布于 2014-06-16 14:57:36
对query的非引用引用可能会混淆plpgsql解析器,因为QUERY也是RETURN QUERY ...构造中使用的关键字。
一般的解决方案是在有问题的标识符周围添加双引号:
DECLARE l_res "query"%ROWTYPE;至于您的完全限定变体,它还有另一个问题:只有模式名称可以作为表名的前缀,而不是数据库名称加模式名称。
这些宣言还应适用于:
DECLARE l_res public."query"%ROWTYPE;或
DECLARE l_res "public"."query"%ROWTYPE;https://stackoverflow.com/questions/24246269
复制相似问题