plpgsql相关内容

Plpgsql一次输入将所有相关字段/列获取到json失败

尝试回答this问题,然后发现我无法解决它。 基本思想:传播两次,从Country_id传播到State_id,State_id传播到City_id两次,然后需要连接Country_id两次。当我们在州级别执行array_agg时,我们需要显式Join Country_id,在城市级别我们也需要使用Join Country_id。 参考链接:https://github.com/hettie- ..
发布时间:2022-07-16 10:08:26 其他开发

创建函数时出错

我尝试创建函数 CREATE OR REPLACE FUNCTION public.my_sql_function3(IN inputval integer) RETURNS TABLE("ID" integer, name character varying, cnt integer) AS $BODY$ select t.id, t.name, CAST(count(*) AS ..
发布时间:2022-07-16 10:03:23 其他开发

Plpgsql-选择多列的数组

我正在尝试创建选择数据、处理并返回数据的过程,但我正在为如何为多列定义数组变量而苦苦挣扎。 这行得通: CREATE OR REPLACE FUNCTION testing_array_return() RETURNS TABLE(id BIGINT) AS $body$ DECLARE l_rows BIGINT[]; BEGIN -- select data usi ..
发布时间:2022-04-14 10:48:31 其他开发

将函数动态应用于postgres表中的所有列

使用postgres 13.1,我希望将前向填充函数应用于表的所有列。前向填充功能在我前面的问题中进行了解释: How to do forward fill as a PL/PGSQL function 但是,在这种情况下,将指定列和表。我想将该代码应用于任意表,即。指定一个表,并对每一列应用正向填充。 以下表为例: CREATE TABLE example(row_num ..
发布时间:2022-04-14 10:44:51 其他开发

如何将前向填充作为PL/PGSQL函数

我正在尝试创建一个等同于 pandas ‘ffill’函数的pl/pgsql。该函数应转发填充空值。在本例中,我可以进行正向填充,但在尝试从我的过程创建函数时出现错误。该函数似乎准确地反映了过程,但我在... as $1部分遇到语法错误。 为什么?我应该读些什么来澄清? -- Forward fill experiment DROP TABLE IF EXISTS example; c ..
发布时间:2022-04-14 10:43:00 其他开发

PLpgSQL函数未返回匹配的标题

我正在尝试在收到文本时返回电影名称以及演员和工作人员的数量。当我输入字符串并使用ilike时,我的查询没有返回匹配的标题。我在前面创建了一个视图,其中包含要在函数中输入的电影标题和剧组人数。 我的代码是: create or replace view movies_crew as select movies.id, movies.title, principals.role from mo ..
发布时间:2022-04-14 10:39:06 其他开发

最长匹配子字符串

如何在varchar变量中搜索最长的匹配项?例如,表GOB具有如下条目: magic_word | prize =================== sh| $0.20 sha| $0.40 shaz| $0.60 shaza| $1.50 我想编写一个plpgsql函数,该函数在其他参数中接受一个字符串作为输入(例 ..
发布时间:2022-04-14 10:34:44 其他开发

PostgreSQL函数中的保存点

我想在PostgreSQL的函数内使用保存点功能。我读到在postgres的函数中不能使用保存点。 但在回滚时,我希望回滚到特定点,因为我想使用保存点。另一种方法是什么? 示例代码 CREATE or replace FUNCTION fn_loadData_Subha() RETURNS BIGINT AS $$ DECLARE batchId BIGINT; ..
发布时间:2022-04-14 10:30:59 其他开发

如何在PL/pgSQL中执行CTE查询(&Q)?

我尝试在下面的代码示例中模拟我的问题。在下面的代码中,我在一个过程中执行select * from test。我们知道,我们必须为此使用perform关键字。这很管用: perform * from test; 但是,如果我尝试将该简单查询重写为CTE,则无法使其工作。我收到一个语法错误。 with test_as_cte as(select * from test) perfor ..
发布时间:2022-04-14 10:29:30 其他开发

Pl/pgSQL:执行VS调用

在研究从另一个过程调用过程与在Postgres 13中重复代码对性能的影响时,我发现您可以使用CALL或PERFORM来调用其他过程。 我在谷歌上搜索了差异,但我找到的唯一相似的东西是 PL/pgSQL perform vs execute 地址PERFORM与EXECUTE而不是PERFORM与CALL。 有人知道有什么不同吗?我应该使用哪一个(从PL/pgSQL过程调用 ..
发布时间:2022-04-14 10:19:43 其他开发

如何批量更新Postgres中5500万条记录的单列

我想更新postgres表的一列。记录大约有5,500万条,所以我们需要一批10000条记录来更新它。 注意:我们希望更新所有行。但我们不想锁定我们的表。 我正在尝试以下查询- Update account set name = Some name where id between 1 and 10000 我们如何才能对每10000条记录更新一次循环? 如有任何建议和帮助,我 ..
发布时间:2022-04-14 10:17:48 其他开发