问题标签 [plpgsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6226 浏览

python - Psycopg2 callproc 和 sql 参数

我有一些 SQL 函数

从 Psycopg2 (如果重要的话,它在 Django 内部)我做

但函数返回与我给出的完全相同的输入序列,忽略结果和 OUT 参数。更改为 IN OUT 并传递一些 foo 值不会改变任何内容。在数据库中调用时,SQL 函数按预期工作

0 投票
2 回答
3999 浏览

postgresql - postgresql:在 EXECUTE 的动态命令中使用 NEW.*

我尝试为 postgresql 8.3 创建一个 plpgsql 触发器,它在按 id 列插入之前自动对表进行分区

如果目标表不存在,它将被创建,并且插入到那里

所以我用这样的新表名创建了插入语句

导致错误:

我有两个问题:

  1. 甚至可以在 EXECUTE 中使用 NEW 还是语句中有错误?
  2. 如果不可能,任何人都知道如何从 NEW 中获取值,以便我可以在语句中使用它们?我唯一想到的是使用 information_schema 来检索主表的列名,然后尝试动态访问 NEW 的值——我也不知道如何:(

谢谢

0 投票
1 回答
1202 浏览

postgresql - PostgreSQL 和 pl/pgsql SYNTAX 根据 SELECT 和 FUNCTION 更新字段(while 循环,DISTINCT COUNT)

我有一个大型数据库,我想做一些逻辑来更新新字段。

主键id用于表 harvard_assignees

逻辑是这样的

  1. 选择所有基于的记录id
  2. 对于每条记录(WHILE),if (state is NOT NULL && country is NULL), update country_out = "US" ELSE update country_out=country

我将步骤 1 视为 PostgreSQL 查询,将步骤 2 视为函数。只是想找出使用​​确切语法在本地实现的最简单方法。

==== 第二个功能更有趣,需要(我相信)DISTINCT

  1. 查找所有 DISTINCT foreign_keys(pat_type,patent 的二元键)
  2. 计数包含该值的记录(例如,n=3 记录具有 fkey "D","388585")
  3. 更新这 3 条记录以将百分比标识为 1/n(例如,更新 3 条记录,设置百分比 = 1/3)
0 投票
3 回答
28958 浏览

postgresql - 如何从 postgresql 函数或触发器发送一些 http 请求

我需要从函数或触发器通过 http 协议(GET 或 POST 请求)发送数据。可能吗?

0 投票
2 回答
4522 浏览

sql - 如何将此 T-SQL 代码转换为 PostgreSQL / plpgsql

我需要将以下 tsql 函数代码转换为 plpgsql 函数,但我完全不知道如何:

这是完整的报价:

0 投票
1 回答
4738 浏览

sql - 在 plpgsql (postgres) 中创建多维 varchar/text 数组

我有一些我想从服务器端代码到数据库的功能。

我不知道如何在 plpgsql 中设置多维 varchar 数组的值。

这是我正在尝试做的一个例子:

对于我的生活,我无法弄清楚如何让它发挥作用。

任何帮助都会很棒。顺便说一句,我正在使用 postgres 8.1(卡在那个版本)。

0 投票
1 回答
2475 浏览

sql - 用于遍历有向图并返回找到的所有边的 PostgreSQL SQL 或 PL/pgSQL 查询

我并不特别习惯于生成复杂的 SQL 查询,并且在设计用于网络遍历的递归查询时,我很难将我对过程语言和基于集合的操作的理解混合起来。我希望通过对有向图进行深度优先搜索(每个节点可以有多个上游边)来找到位于特定节点“上游”的边集,并且最好在 SQL 中实现这一点。

我想做的伪代码如下所示:

我已经用纯 SQL 编写了以下函数:

WITH RECURSIVE但是在将上述伪代码转换为 PostgreSQL查询或 PL/pgSQL 函数时,我正在努力弄清楚如何管理范围和返回类型。我见过的大多数WITH RECURSIVE查询示例都是为遍历每个节点只有一个父节点的树而设计的。有没有人有任何提示/建议如何最好地解决这个问题?

干杯,

将要

0 投票
1 回答
247 浏览

sql - 使用 NEW 语句更新 PSQL 行

因为可以这样做: INSERT INTO some_table VALUES (NEW.*) in pl/pgsql 我们可以做类似的事情,但对于使用 NEW 的 UPDATE 子句?我的意思是我想使用来自 NEW 对象的值更新一些行。

提前致谢。

0 投票
8 回答
85079 浏览

postgresql - 错误:未终止的带引号的字符串在或附近

在使用 ANT 执行下面显示的触发代码时,我收到了错误

我能够通过 PGADmin(由 postgres 提供)和命令行实用程序“psql”成功执行以下代码,并添加了触发功能,但是在通过 ANT 执行时,每次都失败

0 投票
1 回答
367 浏览

performance - 返回另一个 SETOF 函数结果的 SETOF 返回函数的性能?

我编写了一个函数,它接受两个参数并返回一个 SETOF 结果。

CREATE FUNCTION foo(parentId bigint, childId bigint) RETURNS SETOF bar AS ...

我想为此函数编写两个“包装器”,使其更易于调用:

postgres 是否足够聪明,可以直接返回FOO()whenFOO_CHILD()被调用的结果,还是会从FOO()whileFOO_CHILD()执行中复制所有结果,然后返回这些结果?

我想我是在问 pgplsql 是否会进行尾调用优化!

编辑:我正在使用 Postgres 8.2。