首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres:无效类型名称"query%ROWTYPE“

Postgres:无效类型名称"query%ROWTYPE“
EN

Stack Overflow用户
提问于 2014-06-16 14:43:03
回答 1查看 4.6K关注 0票数 0

我想根据表“查询”(l_query query%ROWTYPE)创建一个变量,但是我得到了这样的消息:invalid type name "query%ROWTYPE"我也尝试使用完全限定的表名l_query dbname.public.query%ROWTYPE,但是它对我没有帮助。

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION somefunc()
RETURNS int AS $$
DECLARE
  l_res dbname.public.query%ROWTYPE;
BEGIN
    return 1;
END;
$$ LANGUAGE plpgsql;

PS:我确实有表查询。我查过几次了。我只在生产服务器上有这个错误。在本地,我没有遇到任何问题

代码语言:javascript
复制
                                       version

PostgreSQL 9.2.4 on x86_64未知-linux-gnu,由gcc (Debian 4.7.2-5) 4.7.2,64位编译

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-16 14:57:36

query的非引用引用可能会混淆plpgsql解析器,因为QUERY也是RETURN QUERY ...构造中使用的关键字。

一般的解决方案是在有问题的标识符周围添加双引号:

代码语言:javascript
复制
DECLARE l_res "query"%ROWTYPE;

至于您的完全限定变体,它还有另一个问题:只有模式名称可以作为表名的前缀,而不是数据库名称加模式名称。

这些宣言还应适用于:

代码语言:javascript
复制
DECLARE l_res public."query"%ROWTYPE;

代码语言:javascript
复制
DECLARE l_res "public"."query"%ROWTYPE;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24246269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档