plpgsql相关内容

使用 PL/pgSQL 将查询结果存储在变量中

如何将查询结果赋给 PL/pgSQL 中的变量,PostgreSQL 的过程语言? 我有一个功能: CREATE OR REPLACE FUNCTION 测试(x 数字)返回字符变化 AS$BODY$宣布名称字符变化(255);开始name='SELECT name FROM test_table where id='||x;if(name='test')then——做点什么别的--做其他 ..
发布时间:2021-12-05 12:49:25 其他开发

PostgreSQL 参数化 Order By/Limit in table 函数

我有一个执行简单的 sql select 语句的 sql 函数: CREATE OR REPLACE FUNCTION getStuff(参数字符变化)返回 SETOF 东西作为$BODY$选择 *从东西其中 col = $1$BODY$语言sql; 现在我像这样调用这个函数: select * from getStuff('hello'); 如果我需要使用 order by 和 limi ..
发布时间:2021-12-05 12:27:15 其他开发

如何在 PostgreSQL 中的函数内返回 SELECT 的结果?

我在PostgreSQL中有这个函数,但是我不知道如何返回查询的结果: CREATE OR REPLACE FUNCTION wordFrequency(maxTokens INTEGER)返回 SETOF 记录为$$开始SELECT text, count(*), 100/maxTokens * count(*)从 (选择文本发件人令牌WHERE chartype = 'ALPHABETIC' ..
发布时间:2021-12-01 20:14:20 其他开发

PostgreSQL 函数中语言 sql 和语言 plpgsql 的区别

我在数据库开发中很新,所以我对下面的例子有一些疑问: 函数 f1() - 语言 sql 创建或替换函数 f1(istr varchar)将文本返回为 $$选择“你好!'::varchar ||伊斯特尔;$$语言sql; 函数 f2() - 语言 plpgsql 创建或替换函数 f2(istr varchar)将文本返回为 $$开始选择'你好!'::varchar ||伊斯特尔;结尾 ..
发布时间:2021-12-01 20:06:41 其他开发

函数中的 SELECT 或 INSERT 是否容易出现竞争条件?

我编写了一个函数来为一个简单的博客引擎创建帖子: CREATE FUNCTION CreatePost(VARCHAR, TEXT, VARCHAR[])以 $$ 形式返回整数宣布InsertedPostId 整数;标签名 VARCHAR;开始插入帖子(标题、正文)价值 ($1, $2)将 ID 返回到 InsertedPostId;FOREACH 标签名 IN ARRAY $3 LOOP宣布I ..
发布时间:2021-12-01 19:41:23 其他开发

重构一个 PL/pgSQL 函数以返回各种 SELECT 查询的输出

我编写了一个函数,它以文本形式输出格式良好的 PostgreSQL SELECT 查询.现在我不想再输出文本,而是实际对数据库运行生成的 SELECT 语句并返回结果 - 就像查询本身一样. 到目前为止我所拥有的: CREATE OR REPLACE FUNCTION data_of(integer)返回文本为$BODY$宣布传感器 varchar(100);-- 保存列名列表输入 var ..
发布时间:2021-12-01 19:28:28 其他开发

在 PostgreSQL 中的表上禁用 DELETE?

对于安全敏感的设计,我想在某些表上禁用 DELETEs. DELETE 应该只在行上设置一个 deleted 标志(然后在视图上可见,应用层将使用该标志). 据我所知,规则会生成额外的查询 - 因此规则无法抑制原始查询. 举例说明一个带有触发器的玩具示例(尚未测试): --此表中的数据应该是“不可删除的"创建表文章(身份证序列号,内容文本不为空,已删除布尔值默认 false)- ..
发布时间:2021-11-30 16:49:11 其他开发

被遗忘的赋值运算符“="和司空见惯的“:="

PL/pgSQL 的文档说,变量的声明和赋值是用 := 完成的.但是一个简单、更短、更现代 (见脚注) = 似乎按预期工作: 创建或替换函数 foo() 返回 int AS $$宣布我输入;开始我 = 0;而不是 i = 25 循环i = i + 1;我 = 我 * 我;结束循环;返回我;结尾;$$ 语言 plpgsql;>选择 foo();25 请注意,Pl/pgSQL 可以清楚地区分赋值 ..
发布时间:2021-11-30 12:25:59 其他开发

使用 plpgsql 变量设置 n_distinct 时出错

我尝试使用函数来设置表的 n_distinct 值.代码如下: 创建临时表_temp(id 整数);创建函数 pg_temp.setdistinct(_cnt real)以 $$ 形式返回无效开始更改表_temp更改列 ID 集(n_distinct=_cnt);结尾$$ 语言 plpgsql;选择 pg_temp.setdistinct(1000); 但收到以下错误: 错误:浮点选项“n_ ..
发布时间:2021-11-27 08:37:02 其他开发

将选择查询的输出存储在 postgres 的一个数组中

我的代码是: SELECT column_nameFROM information.SCHEMA.columnsWHERE table_name = 'aean' 它返回表aean的列名. 现在我已经声明了一个数组: DECLARE colnames text[] 如何将 select 的输出存储在 colnames 数组中. 是否需要初始化colnames? 解决方案 有两种 ..
发布时间:2021-11-18 04:53:32 其他开发

将数组从 node-postgres 传递给 plpgsql 函数

plpgsql 函数: CREATE OR REPLACE FUNCTION testarray (int[]) 返回 int 作为 $$宣布len int;开始len := array_upper($1);返回 len;结尾$$ 语言 plpgsql; node-postgres 查询 + 测试数组: var ta = [1,2,3,4,5];client.query('SELECT te ..
发布时间:2021-11-18 04:42:02 其他开发

为什么 PostgreSQL 数组访问在 C 中比在 PL/pgSQL 中快得多?

我有一个表架构,其中包括一个 int 数组列和一个对数组内容求和的自定义聚合函数.换句话说,鉴于以下内容: CREATE TABLE foo (stuff INT[]);插入 foo 值 ({ 1, 2, 3 });插入 foo 值 ({ 4, 5, 6 }); 我需要一个返回 { 5, 7, 9 } 的“sum"函数.正常运行的PL/pgSQL版本如下: 创建或替换函数 array_add ..
发布时间:2021-11-18 03:57:57 其他开发

在 PL/pgSQL 中迭代 integer[]

我试图在 plpgsql 函数中遍历一个整数数组 (integer[]).像这样: 声明一个整数[] = 数组[1,2,3];我大;开始因为我在环形提高通知 "% ",i;结束循环;返回真;结尾 在我的实际用例中,整数数组 a 作为参数传递给函数.我收到此错误: 错误:“$1"处或附近的语法错误第 1 行:1 美元 如何正确遍历数组? 解决方案 DO$做$宣布整数 [] := 数组 ..
发布时间:2021-11-18 03:22:49 其他开发

PHP 数组到 postgres 数组

现在 php 不能直接使用 Postgresql 数组工作.例如,php采用postgresql数组,如'{"foo","bar"}' 我需要简单的 php 函数来从 php 数组创建多维 postgresql 数组. 我认为实验性的 pg_convert() 不是最优的,因为它需要额外的数据来形成用于数据库输出的简单数组字符串,也许我误解了这个函数的想法. 比如我需要转换 $ ..
发布时间:2021-11-18 03:06:56 其他开发

将数组取消一层

我想获取一个 n 维数组并返回包含 n-1 维数组行的集合.例如,取数组 ARRAY[[1,2,3], [4,5,6], [7,8,9]] 并返回一个集合 {1,2,3}, {4,5,6}, {7,8,9}.使用 unnest 返回集合 1,2,3,4,5,6,7,8,9. 我尝试从 PostgreSQL 8.4 中获取 unnest 函数,这似乎可以满足我的要求: 创建或替换函数 tst ..
发布时间:2021-11-18 01:55:10 其他开发

在 plpgsql 中循环数组维度

在plpgsql中,我想从二维数组中一一获取数组内容. DECLARE米 varchar[];arr varchar[][] := array[['key1','val1'],['key2','val2']];开始选择 arr 中的 m环形提高通知'%',m;结束循环;结尾; 但是上面的代码返回: {{key1,val1},{key2,val2}} 一行.我希望能够循环并调用另一个采用以下 ..
发布时间:2021-11-18 01:43:44 其他开发

在 plpgsql 函数中返回匹配输入数组元素的行

我想创建一个执行以下操作的 PostgreSQL 函数: CREATE FUNCTION avg_purchases( IN last_names text[] DEFAULT '{}' )返回表(姓氏文本 [],avg_purchase_size 双精度)作为$BODY$宣布查询文本;开始qry := 'SELECT last_name, AVG(purchase_size)来自购买WHERE ..
发布时间:2021-11-18 01:33:40 其他开发

并行取消嵌套多个数组

我的最后一个问题 将数组传递给存储到 postgres 有点不清楚.现在,澄清我的目标: 我想创建一个接受两个输入参数的 Postgres 存储过程.一个是一些金额的列表,例如(100, 40.5, 76),另一个是一些发票的列表('01-2222-05','01-3333-04','01-4444-08').之后我想使用这两个数字和字符列表并用它们做一些事情.例如,我想从这个数字数组中取出 ..
发布时间:2021-11-18 01:25:50 其他开发

列表/数组的 PL/pgSQL 控制结构

是否可以在 Postgres 中使用这样的东西?这是我想要做的 PL/SQL 示例: PROCEDURE CREATE_PAYMENT(P_AMOUNT IN NUMBER,P_INVOICE_LIST IN SIMPLEARRAYTYPE,P_AMOUNT_LIST IN NUMBER_TABLE -- 传递金额列表...)s_chk_amnt NUMBER;发票清单 SIMPEARRAYTY ..
发布时间:2021-11-17 23:47:38 其他开发

并行取消嵌套多个数组

我的最后一个问题 将数组传递给存储到 postgres 有点不清楚.现在,澄清我的目标: 我想创建一个接受两个输入参数的 Postgres 存储过程.一个是一些金额的列表,例如(100, 40.5, 76),另一个是一些发票的列表('01-2222-05','01-3333-04','01-4444-08').之后我想使用这两个数字和字符列表并用它们做一些事情.例如,我想从这个数字数组中取出 ..
发布时间:2021-11-17 23:08:07 其他开发