问题标签 [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.
sql - 函数中命名参数的 PostgreSQL 问题
Linux 上的 PostgreSQL 8.4。我有一个功能:
当我尝试创建它时返回此错误:
我试过了ALIAS FOR
,没有运气。想法?
postgresql - PostgreSQL Syntax error in PGAdmin
I am new to PostgreSQL and am using the query tool in PGAdmin. I'm trying to run pgsql queries that use variables, but I can't seem to get the syntax right.
Here's a sample query that gives a syntax error:
Update:
Ok, let me try and explain. I come from a SQL server background. In the management studio, I can open a query window and play with (T)-SQL queries.
For example, I can write something like this:
I know this is a dumb example, but I'm just trying to declare a variable and do something with it. I'm trying to familiarise myself with PL/PGSQL.
Update, again:
It's me again. I'm trying the script below and get a "[ERROR ] 7.0-2: syntax error, unexpected character". Is this meant to work in PGAdmin?
postgresql - 如何在 plpgsql 函数中获取表的关键字段?
我需要创建一个在每次 UPDATE 和 INSERT 操作后触发的函数,并检查在某些条件下执行操作的表的关键字段。
该函数(和触发器)需要是一个通用的,它不应该有硬编码的表名/字段名。
我被困在需要访问表名及其模式部分的部分 - 检查哪些字段是 PRIMARY KEY 的一部分。
postgresql - 在 PL/pgsql 中使用 EXECUTE 从通用触发器插入 NEW.*
我有许多使用 Postgres“分区”功能的表。我想在每个表上定义一个通用的 BEFORE INSERT OF ROW 触发器,该触发器将 1)如果对父表发生插入,则动态创建分区,以及 2)对分区重新执行插入。
就像是:
但是“新”记录在 EXECUTE SQL 中不可见。我怎样才能使这项工作尽可能简单?
作为替代方案,我可以以某种方式遍历 NEW 记录中的字段吗?
我考虑过使用临时表:
但这也不起作用,因为缓存了对临时表的引用:为什么在访问 PL/PgSQL 函数中的临时表时出现“与 OID ##### 的关系不存在”错误?
我正在使用 Postgres 8.2,无法更改为任何其他版本。
编辑:
正如@alvherre 指出的那样,这可能可以在 Postgres 8.4 中使用 EXECUTE ... USING 语法来完成。请参阅http://wiki.postgresql.org/wiki/PL/pgSQL_Dynamic_Triggers中的示例
sql - 从 PostgreSQL 存储过程返回记录集的最简单方法是什么?
我只是有一个包含国家列表及其 ISO 国家代码的表格。我将查询包装在存储过程(又名函数)中,例如:
我得到的错误是:
我知道我可以定义一个类型,然后像游标一样遍历记录集,但是 IIRC 在更新版本的 PostgreSQL(我使用的是 8.4.3)下有更好的方法来做到这一点,但我正在努力尝试记住。
编辑:
这有效:
注意“RETURNS setof [table name]”。但它似乎不是最灵活的。如果我尝试返回几个表的连接,它就会崩溃。
postgresql - 错误:查询没有结果数据的目的地
当我执行上面的代码时,出现以下错误,
错误:查询没有结果数据的目的地
我已经使用 perform 然后我遇到了不同的问题,
错误:“执行”处或附近的语法错误
建议我应该怎么做才能克服这个错误。
postgresql - PL/pgSQL 中的 EXECUTE...USING 语句不适用于记录类型?
我正在尝试在 PL/PgSQL 中编写一个函数,该函数必须与它作为参数接收的表一起使用。
我在函数定义中使用 EXECUTE..INTO..USING 语句来构建动态查询(这是我知道的唯一方法)但是......我遇到了 RECORD 数据类型的问题。
让我们考虑下面的(极其简化的)示例。
它输出以下错误:
错误:无法识别记录数据类型中的列“descr”
尽管我使用的语法对我来说似乎是有效的。我不能使用静态选择(在示例中注释),因为我想动态地引用列名。
所以..有人知道上面的代码有什么问题吗?
postgresql - PostgreSQL - 尽管运行 CREATE LANGUAGE,但语言 pgplsql 不存在
我只是试图创建我的第一个 plpgsql 函数。执行脚本时,我得到
错误:语言“'plpgsql'”不存在
然后我运行命令 CREATE LANGUAGE plpgsql; 显示以下错误:
错误:语言“plpgsql”已经存在
命令正在同一个数据库上运行。
问候
彼得
datetime - 如何使用 PL/pgSQL 舍入到最接近的 X 分钟?
如何四舍五入到最接近的 X 分钟?
这是我的尝试:
例子:
应该返回
python - PostgreSQL 中的 Python 存储过程
我们对 Postgres 还很陌生,并且来自 Microsoft Sql Server。
我们现在想写一些存储过程。好吧,在努力获得比hello world
在 pl/pgsql 中工作更复杂的东西之后,我们决定如果我们要学习一门新语言会更好,我们不妨学习 Python,因为我们在大约 15 分钟内得到了相同的查询(注意,我们中没有人真正了解python)。
因此,与 pl/psql 相比,我对它有一些疑问。
- pl/Pythonu 是否比 pl/pgsql 慢?
- 对于如何使用它编写好的存储过程,是否有任何“好的”参考?Postgres 文档中的五个短页并不能真正告诉我们足够的信息。
- 查询准备呢?应该一直使用吗?
- 如果我们在很多查询计划中使用 SD 和 GD 数组,它是否会变得太满或对服务器产生负面影响?如果太满,它会自动删除旧值吗?
- 它是否有希望成为一种值得信赖的语言?
此外,我们的存储过程使用非常轻。现在我们只有 4 个,但我们仍在尝试从 Sql Server 特定语法转换少量代码(例如变量,不能在存储过程之外的 Postgres 中使用)