问题标签 [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 投票
1 回答
4226 浏览

exception - PostgreSQL 自定义异常?

在 Firebird 中,我们可以像这样声明自定义异常:

CREATE EXCEPTION EXP_CUSTOM_0 '异常:自定义异常';

这些存储在数据库级别。在存储过程中,我们可以像这样引发异常:

异常 EXP_CUSTOM_0 ;

PostgreSQL 中是否有等价物?

0 投票
1 回答
29846 浏览

database - 触发后查询没有结果数据的目的地

我的触发器有问题。在插入新行时,它将检查文章是否尚未售出。我可以在软件中做到这一点,但我认为在数据库中这样做会更好。

这是插入后的错误。

触发器有什么问题?没有它,效果很好。

0 投票
2 回答
4379 浏览

regex - PL/pgSQL 中的正则表达式替换

如果我有以下输入(不包括引号):

如何将所有多个空间折叠为一个空间,以便将输入转换为:

这将在插入/更新的触发函数中使用(它已经修剪了前导/尾随空格)。目前,如果输入包含多个相邻空格,它会引发异常,但我宁愿它在插入之前简单地将其转换为有效的东西。

最好的方法是什么?我似乎找不到 PL/pgSQL 的正则表达式替换函数。有一个text_replace功能,但这最多只能将两个空格折叠为一个(意味着三个连续的空格将折叠为两个)。一遍又一遍地调用这个函数并不理想。

0 投票
11 回答
200865 浏览

postgresql - 截断 Postgres 数据库中的所有表

在重建之前,我经常需要从我的 PostgreSQL 数据库中删除所有数据。我将如何直接在 SQL 中执行此操作?

目前,我设法提出了一条 SQL 语句,该语句返回我需要执行的所有命令:

但是一旦我拥有它们,我就看不到以编程方式执行它们的方法。

0 投票
2 回答
9251 浏览

postgresql - Postgres FOR LOOP 的语法错误

我在 postgres 函数中遇到问题:

我有错误:

0 投票
1 回答
1921 浏览

postgresql - PL/pgSQL 函数可以包含动态子查询吗?

我正在编写一个 PL/pgSQL 函数。该函数具有指定(间接)从哪些表读取过滤信息的输入参数。

该函数嵌入了业务逻辑,允许它根据输入参数从不同的表中选择数据。该函数动态构建一个子查询,该子查询返回过滤数据,然后用于运行主查询。

我的问题是:

  1. 在 PL/pgSQL 函数中使用动态子查询是否“合法”。我不明白为什么不 - 但这个问题与下一个问题有关。

  2. AFAIK、PL/pgSQL 由查询引擎缓存或预编译。生成动态子查询的函数如何影响查询引擎的工作?

0 投票
1 回答
921 浏览

postgresql - 如何将此函数编写为 pL/pgSQl 函数?

我正在尝试在 PL/pgSQL 函数中实现一些业务逻辑。

我已经编写了一些伪代码来解释我想要包含在函数中的业务逻辑类型。

注意:这个函数返回一个表,所以我可以在如下查询中使用它:

SELECT A.col1, B.col1 FROM (SELECT * from some_table_returning_func(1, 1, 2, 3) as A), tbl2 as B;

pl/PgSQL 函数的伪代码如下:

我有以下问题:

  1. 如何正确编写函数(即使用生成的 WHERE 子句执行查询,并返回一个表

  2. 如何编写一个接受表和整数并返回表 (another_table_returning_func) 的 PL/pgSQL 函数?

0 投票
2 回答
373 浏览

postgresql - PostgreSQL storing paths for reference in scripts

I'm trying to find the appropriate place to store a system path in PostgreSQL.

What I'm trying to do is load values into a table using the COPY command. However, since I will be referring to the same file path regularly I want to store that path in one place. I've tried creating a function to return the appropriate path, but I get a syntax error when I call the function in the COPY command. I'm not sure if this is the right way to go about it, but I'll post my code anyway.

COPY command:

Function Definition:

If anyone has a different idea on how to accomplish this I'm open to suggestions.

UPDATE:

The error I am receiving is:

ERROR: syntax error at or near "employee_scheduler" LINE 12: FROM employee_scheduler.get_csv_path('countries.csv')

I've tried the following statements with no luck:

I'm beginning to think the way I'm trying to achieve this isn't possible. Does anyone else have any ideas on how to achieve this? I might just have to hard code the path everywhere if I want to use the copy statement...

Thanks for any help.

0 投票
2 回答
1356 浏览

postgresql - 使用命令中的副本未触发触发器

我已经使用 copy from 命令填充了一个表,该命令又将在汇总表中创建记录。虽然复制命令成功运行后,我在汇总表中看不到任何记录。任何人都可以对我有所了解吗?请在下面找到表格以及存储过程:-

0 投票
7 回答
46065 浏览

postgresql - 如何在PostgreSQL中的字符串中查找特定字符的第一次和最后一次出现

我想在字符串中查找特定字符的第一次和最后一次出现。例如,考虑一个名为“2010-####-3434”的字符串,并假设要搜索的字符是“#”。字符串中第一次出现的散列在第 6 位,最后一次出现在第 9 位。