plpgsql相关内容
如何在 Postgres 中进行此类查询? IF (select count(*) from orders) >0然后从订单中删除别的INSERT INTO 订单值 (1,2,3); 解决方案 DO$做$开始如果存在(从订单中选择) THEN从订单中删除;别的插入订单值 (1,2,3);万一;结尾$做$ 标准 SQL 中没有过程元素.IF 语句 是默认过程语言 PL/pgSQL 的一部分.
..
我和我的用户不使用 PL/pgSQL 中的函数重载.每个(模式,名称)元组总是有一个函数.因此,我们只想按名称删除函数,更改其签名而不必先删除它,等等.例如,考虑以下函数: 创建或替换函数 myfunc(day_number SMALLINT)退货表(a INT)作为$BODY$开始返回查询(SELECT 1 as a);结尾;$BODY$语言 plpgsql; 为了节省时间,我们想如下调用它
..
我正在尝试在 PostgreSQL 中创建 crosstab 查询,以便它自动生成 crosstab 列而不是对其进行硬编码.我编写了一个函数,可以动态生成crosstab 查询所需的列列表.想法是使用动态 sql 替换 crosstab 查询中此函数的结果. 我知道如何在 SQL Server 中轻松完成此操作,但我对 PostgreSQL 的有限了解阻碍了我的进步.我正在考虑将生成列的动
..
这是的变体返回多列的 plpgsql 函数被多次调用.但是,我希望找到针对我的特定情况的解决方案. 我有一个函数,它处理带有给定参数的行数组,并返回一组行 + 一个新列. CREATE OR REPLACE foo(data data[], parameter int) RETURNS SETOF Enhanceddata AS... 该函数适用于只有一组数据的测试用例 SELECT
..
我需要创建一个函数来运行查询并返回结果,表名和列名是函数的参数.我目前有这个: CREATE OR REPLACE FUNCTION qa_scf(tname 字符变化,cname 字符变化)返回 SETOF INT AS$BODY$开始RETURN QUERY SELECT * FROM tname WHERE cname !='AK' AND cname!='CK';结尾;$BODY$语言
..
放弃阅读整个问题,我的基本问题是: PostgreSQL 中是否有转义字符串中正则表达式字符的函数? 我已经浏览了文档,但找不到这样的功能. 这里是完整的问题: 在 PostgreSQL 数据库中,我有一列包含唯一名称.我还有一个进程会定期将名称插入到该字段中,并且为了防止重复,如果需要输入一个已经存在的名称,它会在末尾附加一个空格和带有计数的括号. 即姓名、姓名(1)、
..
我想对 PostgreSQL 中的表进行大量更新,但我不需要在整个操作中维护事务完整性,因为我知道我正在更改的列不会被写入或在更新期间阅读.我想知道是否有一种简单的方法 在 psql 控制台中 可以使这些类型的操作更快. 例如,假设我有一个名为“orders"的表,有 3500 万行,我想这样做: UPDATE 命令 SET status = null; 为了避免被转移到离题的讨论中,让
..
我正在编写一个 SP,使用 PL/pgSQL. 我想返回一个记录,由几个不同表中的字段组成.可能看起来像这样: CREATE OR REPLACE FUNCTION get_object_fields(name text)返回记录为 $$开始-- 从表 t1 中获取字段 f1、f2 和 f3-- 从表 t2 中获取字段 f4、f5-- 从表 t3 中获取字段 f6、f7 和 f8-- 将字段
..
我正在 PL/pgSQL 中编写一个函数,我正在寻找检查一行是否存在的最简单方法. 现在我正在选择一个 integer 到一个 boolean 中,这并不真正起作用.我对 PL/pgSQL 还没有足够的经验,不知道这样做的最佳方法. 这是我的部分功能: DECLARE person_exists boolean;开始person_exists := FALSE;SELECT "perso
..
据我所知,我的函数与我见过的样本非常相似.有人能告诉我如何让它工作吗? 创建或替换函数 get_user_by_username(用户名 varchar(250),在线布尔值) 将记录集返回为 $$申报结果记录;开始如果在线那么更新用户设置 last_activity = current_timestamp其中 user_name = 用户名;万一;返回查询选择用户身份,用户名,最后一个活动,创
..
使用 PostgreSQL 9.0. 假设我有一个包含以下字段的表:company、profession 和 year.我想返回一个结果,其中包含唯一的公司和专业,但根据数字序列聚合(到数组中很好)年份: 示例表: +-----------------------------+|公司 |职业 |年 |+---------+------------+------+|谷歌 |程序员 |2
..
它一定很简单,但我正在迈出 Postgres 函数的第一步,但我找不到任何有效的东西... 我想创建一个函数来修改表和/或列,但我找不到在函数中将表和列指定为参数的正确方法. 类似于: CREATE OR REPLACE FUNCTION foo(t table)返回无效作为 $$开始更改表 t 添加列 c1 varchar(20);更改表 t 添加列 c2 varchar(20);
..
我经常需要在重建之前从我的 PostgreSQL 数据库中删除所有数据.我将如何直接在 SQL 中执行此操作? 目前我已经设法想出了一个返回我需要执行的所有命令的 SQL 语句: SELECT '截断表' ||表名 ||';'FROM pg_tables WHERE tableowner='MYUSER'; 但是一旦我有了它们,我就看不到以编程方式执行它们的方法. 解决方案 Fr
..
对 PL/pgSQL 完全陌生,this 中的双美元符号是什么意思功能: 创建或替换功能 check_phone_number(text)返回布尔值 AS $$开始如果不是 $1 ~ e'^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$' THENRAISE EXCEPTION '格式错误的字符串“%".预期格式为 +999 999';万一;返回真;结尾;$$ 语言 plpg
..
我不确定如何实现以下目标: CREATE OR REPLACE FUNCTION fnJobQueueBEFORE() RETURNS trigger AS $$宣布影子名称 varchar := TG_TABLE_NAME ||'阴影';开始INSERT INTO shadowname VALUES(OLD.*);老去;结尾;$$语言 plpgsql; 即使用动态生成的名称将值插入到表中.
..
我想在 Postgres 函数中传递一个表名作为参数.我试过这个代码: CREATE OR REPLACE FUNCTION some_f(param character variables) 返回整数作为 $$开始IF EXISTS (select * from quote_ident($1) where quote_ident($1).id=1) THEN返回 1;万一;返回0;结尾;$$
..
如何将查询结果赋给 PL/pgSQL 中的变量,PostgreSQL 的过程语言? 我有一个功能: CREATE OR REPLACE FUNCTION 测试(x 数字)返回字符变化 AS$BODY$宣布名称字符变化(255);开始name='SELECT name FROM test_table where id='||x;if(name='test')then——做点什么别的--做其他
..
我有一个执行简单的 sql select 语句的 sql 函数: CREATE OR REPLACE FUNCTION getStuff(参数字符变化)返回 SETOF 东西作为$BODY$选择 *从东西其中 col = $1$BODY$语言sql; 现在我像这样调用这个函数: select * from getStuff('hello'); 如果我需要使用 order by 和 limi
..
我在PostgreSQL中有这个函数,但是我不知道如何返回查询的结果: CREATE OR REPLACE FUNCTION wordFrequency(maxTokens INTEGER)返回 SETOF 记录为$$开始SELECT text, count(*), 100/maxTokens * count(*)从 (选择文本发件人令牌WHERE chartype = 'ALPHABETIC'
..
我编写了一个函数来为一个简单的博客引擎创建帖子: CREATE FUNCTION CreatePost(VARCHAR, TEXT, VARCHAR[])以 $$ 形式返回整数宣布InsertedPostId 整数;标签名 VARCHAR;开始插入帖子(标题、正文)价值 ($1, $2)将 ID 返回到 InsertedPostId;FOREACH 标签名 IN ARRAY $3 LOOP宣布I
..