小编Cha*_*hau的帖子

PostgreSQL:使用其他表中的模式和表名?

考虑这样一种情况,我的所有模式名称都在一个表中,而我的所有表名称都在另一个表中。

是否可以执行以下操作(伪代码)?

SELECT value FROM (SELECT schema_name FROM schemas).(SELECT table_name FROM tables)
Run Code Online (Sandbox Code Playgroud)

或者我必须将查询分解为三个 SELECT 吗?

postgresql dynamic-sql

8
推荐指数
2
解决办法
1万
查看次数

如何访问PL/pgSQL中RETURNs累积的行数

表演时

RETURN QUERY ...
Run Code Online (Sandbox Code Playgroud)

在 PL/pgSQL 函数中,之后是否可以直接访问累积到记录堆中的行数,在函数结束时返回这些行数?

例子:

RETURN QUERY SELECT * FROM tableA; -- 14 records
RETURN QUERY SELECT * FROM tableB; -- 8 records
RETURN QUERY SELECT * FROM tableC; -- 22 records
Run Code Online (Sandbox Code Playgroud)

累积记录的数量现在应该是 44。

postgresql plpgsql functions

5
推荐指数
1
解决办法
8220
查看次数

使用 plpgsql 进行递归查询

我正在尝试编写一个plpgsql函数,该函数从树结构中的记录递归返回一组列。

我有一个数据表和一个将数据链接在一起的表:

DATATABLE
-----------
id integer
value text
info text

LINKTABLE
-----------
link integer
parent integer
Run Code Online (Sandbox Code Playgroud)

我的想法是在以下功能中做类似的事情:

CREATE OR REPLACE FUNCTION my_function(itemID integer)
  RETURNS TABLE(id integer, value text) AS
$BODY$
BEGIN    
    RETURN QUERY SELECT my_function(A.link) FROM linktable A, datatable B 
        WHERE A.parent = B.id AND B.id = itemID) C;

    RETURN QUERY SELECT id, value FROM datatable WHERE id = itemID;            
    RETURN;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我在第一个查询中遇到错误:

错误:查询结构与函数结果类型不匹配

我的Just-In-Brain编译器没有检测到任何问题,那么我在这里做错了什么?

postgresql plpgsql functions postgresql-9.2

2
推荐指数
1
解决办法
7433
查看次数