plpgsql相关内容

Postgres 相当于 Oracle 的“DIRECTORY"对象

是否可以创建"DIRECTORY" 对象在 Postgres 中? 如果没有可以帮助我解决如何在 PostgreSQL 上实现它. 解决方案 Postgres 中没有与“Oracle 目录"等效的概念. 替代方案取决于为什么需要“Oracle 目录". 如果需要目录在数据库服务器上读写文件,那么可以通过通用文件访问函数.对这些功能的访问仅限于超级用户(详细信息在手册的链接 ..
发布时间:2021-06-18 19:37:53 其他开发

损坏的 PL/ruby 的替代方案:转换仓库日志表

升级 Postgres 8.4 后 ->9.3 和 Ruby 1.8 ->2.1、PL/ruby运行失败.在第一次执行任何 PL/ruby 函数时,我会立即获得 Postgres 服务器核心转储.我正在分析堆栈跟踪,但它看起来不太好.另外PL/ruby的维护状态也不好. 因此,将重点转移到我使用 PL/ruby 解决的实际数据库问题上,并考虑替代方案. 问题的简化示例:给定一个仓库日志 ..
发布时间:2021-06-18 19:37:45 其他开发

在 postgresql 中从 RAISE NOTICE 写入文件

我在 postgresql 中有一个示例函数,它引发了一个通知. 示例函数- 创建或替换函数 raise_test() 返回文本为$body$宣布retStr 文本;开始SELECT current_timestamp 到 retStr;提高通知 '%', retStr ;返回 retStr;结尾;$body$语言 plpgsql; 有什么办法可以更新上面的函数,让整个通知保存到一个文件 ..
发布时间:2021-06-18 19:37:42 其他开发

PostgreSQl 函数返回多个动态结果集

我有一个旧的 MSSQL 过程需要移植到 PostgreSQL 函数.基本上,SQL 过程包含在选择语句上的 CURSOR 中.对于每个游标实体,我有三个基于当前游标输出的选择语句. FETCH NEXT FROM @cursor INTO @entityId而@@FETCH_STATUS = 0开始SELECT * FROM table1 WHERE col1 = @entityIdSELEC ..
发布时间:2021-06-18 19:37:40 其他开发

在 plpgsql 中识别 jsonb null 的最佳实践

我知道之前有人问过这个问题的变体: 为什么不能将 NULL 转换为 JSON在 postgreSQL 中为 null? 为什么 JSON null 不强制转换为postgres 中的 SQL null? 也许其他人... 我无法从上述链接中了解到是否有最佳实践. 考虑以下代码: 做$$宣布_main_jsonb jsonb = '{“i_am_null":null,“a_s ..
发布时间:2021-06-18 19:37:34 其他开发

如何在 Postgres 函数中使用文本输入作为列名?

我正在使用 Postgres 和 PostGIS.尝试编写一个根据给定参数选择特定列的函数. 我正在使用 WITH 语句创建结果表,然后将其转换为 bytea 返回. 我需要帮助的部分是 $4 部分.我尝试在下面演示和 $4::text 并且都给我返回输入的文本值而不是表中的列值如果 cols=name 所以我从查询名称而不是表中的实际名称返回.我也尝试了 data($4) 并得到了类型错 ..
发布时间:2021-06-18 19:37:28 其他开发

PGSQL 触发器函数写入日志表异常

背景 我是 PostgreSQL 的新手,我在使用这个触发器函数时遇到了一些问题,我在下面显然已经大大简化了.我可以要求帮助修复查询,但我认为我可以处理这个问题,我更关心的是我有很多这样的功能,我需要一种方法来了解它失败的原因,哪些失败了. 问题 我怎样才能捕获在这个函数中发生的异常并将它们写入某种日志表,以便我可以查看和修复每个异常?理想情况下,我也想将失败的 sql 语句写入 ..
发布时间:2021-06-18 19:37:25 其他开发

Postgres:仅检查 INSERT 的约束

我需要在 Postgres 中设置一个约束,它只会在 INSERT 查询上触发(而不是在 UPDATE 查询上). 目前它是这样实现的: ALTER TABLE test ADD CONSTRAINT check_something_const检查(check_something(id,task_id))无效; 哪里check_something CREATE OR REPLACE F ..
发布时间:2021-06-18 19:37:22 其他开发

删除 Redshift 中的循环

我有一个表,其中包含有关我的数据库中不同表的信息.对于其中的每个表,我希望进行定期日志记录(每天).问题是我已经使用 for 循环完成了此操作,并且在 Redshift 中执行需要花费大量时间.我提供了用于创建表、日志记录表和使用 for 循环的程序的查询.请提出一种替代方法来实现这一点,而无需 for 循环.包含不同表信息的表结构: CREATE TABLE public.info_schem ..
发布时间:2021-06-18 19:37:13 其他开发

在不创建临时表的情况下加入数组 unnest 的输出

我在 UDF 中有一个查询(如下所示),其中 unnest() 是一个整数数组并对其进行连接,因为我知道这一点,所以我在 pgplsql UDF 中创建了一个本地临时表作品.是否可以直接在查询中使用 unnest 来执行连接,而不必创建临时表? 创建或替换函数 search_posts(forum_id_ 整数,查询_字符变化,偏移_整数默认为空,限制_整数默认为空,from_date_ TIM ..

从 plpgsql 函数返回一组行.

我想从 plpgsql 函数返回表. 这是我的代码. CREATE FUNCTION test() 返回 my_table AS$BODY$声明q4 my_table;开始q4 := SELECT * FROM my_table;返回 q4;结束;$BODY$语言sql; 我收到以下错误: 错误:错误:“SELECT"处或附近的语法错误第 5 行:q4 := SELECT * FR ..
发布时间:2021-06-18 19:37:03 其他开发

在 plpgsql 声明块中使用 \set 变量

我的 SQL 脚本包含以下内容: \set test 'some value'做 $$DECLAREv_test text:= :'test';开始RAISE NOTICE 'test var is %',v_test;结束$$; 在尝试评估 test 的值时出现语法错误: 错误:“:"处或附近的语法错误 理想情况下,我希望有一个匿名 plpqsql 块存在于一个文件中,然后使用一组环境变 ..
发布时间:2021-06-18 19:36:57 其他开发

循环遍历 PL/pgSQL 中的给定值列表

我正在尝试遍历几个字段并对它们运行一个函数: FOR 字段 IN ARRAY['f1','f2'] LOOP执行 pg_temp.converFieldToLower(newTableNameRaw,field)结束循环; 这是我尝试使用的功能: 创建或替换函数 pg_temp.converFieldToLower(t varchar, f varchar) RETURNS void AS ..
发布时间:2021-06-18 19:36:54 其他开发