plpgsql相关内容
在Hasura中,我正在尝试编写一个基于plpgsql的函数,该函数应该返回t_Documents。该函数应该根据它应该运行适当的SQL(使用IF条件检查)的参数值接受各种可选参数,并返回记录。这是我的目标。 我已经从没有参数的简单函数开始,该函数在Hasura中成功创建和跟踪,但当尝试查询它时抛出"query has no destination for result data" 我
..
begin; create type public.ltree as (a int, b int); create table public.parent_tree(parent_id int,l_tree ltree); insert into public.parent_tree values(1,(2,2)),(2,(1,2)),(3, (1,28)); commit; 正在尝试复制此
..
按照this评论的指示。 CREATE OR REPLACE FUNCTION test_upsert( _parent_id int, _some_text text) RETURNS text LANGUAGE plpgsql AS $func$ DECLARE a text; BEGIN INSERT INTO parent_tre
..
我编写了一个函数,它以文本形式输出格式良好的 PostgreSQL SELECT 查询.现在我不想再输出文本了,但实际上对数据库运行生成的 SELECT 语句并返回结果 - 就像查询本身一样. 到目前为止我所拥有的: 创建或替换函数 data_of(integer)返回文本为$身体$宣布传感器 varchar(100);-- 保存列名列表类型 varchar(100);-- 保存表名结果文
..
问题:如何在存储函数中声明同类型的变量作为参数? 简单的答案是使用 %TYPE,这样可以: 创建或替换函数 test_function_1(param1 text)返回整数 AS$身体$宣布myVariable param1%TYPE;开始返回 1;结尾;$身体$语言 plpgsql 易失性费用 100; 但问题是当 param1 是复合类型时: CREATE TYPE comp_ty
..
我正在尝试使用 PL/pgSQL (PostgreSQL 9.3) 实现一个函数,该函数返回一个与参数中的输入表具有相同结构的表.基本上,我想更新一个表,并用 plpgsql 返回更新后的表的副本.我搜索了 SO,发现了几个相关的问题(例如 Return dynamic table with unknown columns from PL/pgSQL function 和 表名作为 Postgre
..
..
使用时不复制外键约束 create table table_name (like source_table INCLUDING ALL)' 在 Postgres 中.如何创建包含所有外键的现有表的副本. 解决方案 CREATE TABLE ... LIKE ...中没有自动创建外键的选项. 对于文档: LIKE source_table [like_option ...]
..
我确定这很常见,但 Google 没有提供帮助.我正在尝试在 PostgreSQL 9.1 中编写一个简单的存储过程,它将从父 cpt 表中删除重复的条目.父表 cpt 被子表 lab 引用,定义为: CREATE TABLE 实验室 (recid 序列号不为空,cpt_recid 整数,...........约束 cpt_cpt 外键 (cpt_recid)参考 cpt (recid) MAT
..
我可以在 Check 约束中进行 SQL 子查询吗? 我有一个 post 表,其中包含 id, owner 列我有另一个表 action 列 user_id, post_id 表 user 与列 id post_id ->post.id 和 user_id ->user.id 也是 post.owner ->user.id 现在我想在 action 表上限制 post(po
..
我需要一个函数来规范化我的输入表 features 值.我的 features 表有 9 列,其中 x1,x2...x6 是我需要缩放的输入列. 我可以通过使用静态查询来做到这一点: 创建或替换函数 scale_function()返回 void 作为 $$声明 tav1 特征%rowtype;rang1 特征%rowtype;开始选择 avg(n),avg(x0),avg(x1),avg
..
我在 Postgres 9.3.5 中创建了以下函数: CREATE OR REPLACE FUNCTION get_result(val1 text, val2 text)返回文本为$身体$声明结果文本;开始从表中选择 min(id) 到结果中其中 id_used 为 null 且 id_type = val2;更新表集id_used = 'Y',col1 = val1,id_used_dat
..
我有plpgsql函数: 创建或替换函数 test() 返回 VOID AS$$宣布my_row my_table%ROWTYPE;开始SELECT * INTO my_row FROM my_table WHERE id='1';my_row.date := now();结尾;$$ 语言 plpgsql; 我想知道是否可以直接更新 my_row 记录. 我现在发现的唯一方法是: UP
..
我正在调整一些 PL/pgSQL 代码,以便我的 refcursor 可以将表名作为参数.因此我更改了以下行: 声明pointCurs CURSOR FOR SELECT * from tableName 进行更新; 用这个: OPEN pointCurs FOR execute 'SELECT * FROM ' ||quote_ident(tableName) 用于更新; 我调整了循环,
..
我有相当繁重的查询需要重写 FOR 循环,并希望使用更多 SQL 而不是 plpgsql 结构来简化它.查询如下: FOR big_xml IN SELECT unnest(xpath('//TAG1', my_xml)) 循环str_xml = unnest(xpath('/TAG2/TYPE/text()', big_xml));FOR single_xml IN SELECT unnest
..
我有责任将我们的代码从 sqlite 切换到 postgres.下面复制了我遇到的问题之一. INSERT INTO group_phones(group_id, phone_name)选择 g.id、p.nameFROM phone as p, groups as g其中 g.id 在 ($add_groups) 和 p.name 在 ($phones); 出现重复记录时会出现问题.在此表中
..
我正在尝试将 java 中的函数转换为 pl/pgsql,我发现的一个问题是当我尝试将 2 个负数相加并得到一个正数时,更具体地说: public void sum(){int n1 = -1808642602;int n2 = -904321301;System.out.println(n1 + n2);//结果为 1582003393} 在 pl/pgsql 中,我得到一个整数超出范围错误
..
我在存储过程中有一个查询,它对表中的一些值求和: SELECT SUM(columnA) FROM my_table WHERE columnB = 1 INTO res; 在此选择之后,我用另一个查询检索到的整数减去 res 值并返回结果.如果验证了 WHERE 子句,则一切正常.但如果不是,我的所有函数返回的都是一个空列(可能是因为我试图用一个空值减去一个整数). 如果不满足 WHE
..
我有一个 Postgres 函数: create function myfunction(integer, text, text, text, text, text, text) 返回表(id int,匹配文本,score int,nr int,nr_extra 字符变化,信息字符变化,邮政编码字符变化,街道特征不同,地方特征不同,乡村特征不同,the_geom 几何)作为 $$开始返回查询(选
..
我有一个用作 INSERT 触发器的函数.此函数删除与插入的行中的 [序列号] 冲突的行.它工作得很好,所以我真的不想争论这个概念的优点. DECLAREre1 feeds_item.shareurl%TYPE;开始SELECT regexp_replace(NEW.shareurl, '/[^/]+(-[0-9]+\.html)$','/[^/]+\\1') INTO re1;RAISE NO
..