plpgsql相关内容

PostgreSQL 函数/存储过程 CURRENT_TIMESTAMP 不会改变

我想跟踪函数内的执行时间.例如,我有以下状态跟踪表: CREATE TABLE status_table(run_id 数字非空,start_ts 时间戳(6)不带时区 NOT NULL,end_ts 时间戳(6) 不带时区 NOT NULL)和 (OIDS=FALSE)随机分布; 我有以下示例函数,它使用 PG_SLEEP(5) 来模拟我的函数实际执行的操作: CREATE OR REP ..
发布时间:2021-06-18 19:36:48 其他开发

PostgreSQL 中的函数中是否有命名参数的约定

我来自 SQL Server 背景,其中在存储过程中使用/鼓励使用“@"符号.这很有用,因为您可以轻松查看什么是列以及什么是值.例如. CREATE PROCEDURE Foo@Bar VARCHAR(10),@Baz INT作为开始插入 MyTable (酒吧,巴兹)值 (@酒吧,@巴兹)结尾 我知道我只能使用序数位置,但我们存储的一些过程有 20 个左右的参数,并且命名参数使其在 IMO ..
发布时间:2021-06-18 19:36:45 其他开发

当列不存在时,Postgres 返回一个默认值

我有一个查询,如果缺少某个列,我基本上想要一个回退值.我想知道我是否可以纯粹在我的查询中处理这个问题(而不是先探测并发送一个单独的查询.本质上,我正在寻找一个与 COALESCE 等效的处理缺失列的情况. 想象以下 2 个表格. T1身份证 |标题 |额外的1 |价值- 和 -T2身份证 |标题1 安 我希望能够使用相同的查询从这些表中的任何一个中进行选择. 例如,如果 t2 实际 ..
发布时间:2021-06-18 19:36:42 其他开发

具有异常块的过程中可以存在 Postgres 提交吗?

我很难理解 Postgres 中的事务.我有一个程序可能会遇到异常.到目前为止,我可能希望在程序的某些部分提交我的工作,以便在发生异常时不会回滚. 我希望在程序结束时有一个异常处理块,我可以在其中捕获异常并将异常中的信息插入到日志记录表中. 我将问题归结为一个简单的过程,如下所示,该过程在 PostgreSQL 11.2 上失败 2D000 在子事务处于活动状态时无法提交PL/pgS ..
发布时间:2021-06-18 19:36:40 其他开发

它可以引用 PL/pgSQL 变量或表列

我在 pgsql 中有一个函数 CREATE OR REPLACE FUNCTION core.date_bs_from_ad(date_in_ad date)返回字符变化 AS$$开始返回(从 core.date_conversion 选择 date_in_bs哪里 date_in_ad = $1);结尾$$语言 plpgsql; 它的创建没有错误,但是当我使用这个函数时,它通过以下错误: ..
发布时间:2021-06-18 19:36:35 其他开发

PL/pgSQL 执行与执行

在 PL/pgSQL 上执行和执行有什么区别? 来自手册: 有时对表达式或 SELECT 查询求值但丢弃结果很有用,例如在调用具有副作用但没有有用结果值的函数时.要在 PL/pgSQL 中执行此操作,请使用 PERFORM 语句. 但是,当我尝试以下操作时: 执行'create table foo as (select 1)'; 什么都没发生.虽然这个查询应该有副作用(创建表 ..
发布时间:2021-06-18 19:36:32 其他开发

我可以让 postgres plpgsql 函数返回变量列记录吗?

我想创建一个 postgres 函数来构建它的列集即时返回;简而言之,它应该包含一个键列表,构建每个键一列,并返回包含任何设置的记录列是.简而言之,代码如下: CREATE OR REPLACE FUNCTION reports.get_activities_for_report() RETURNS int[] AS $F$开始返回数组(SELECT activity_id FROM publi ..
发布时间:2021-06-18 19:36:26 其他开发

如何在c#中返回postgresql函数的结果?控制台输出为空

我有一个问题,我在 postgresql 中有一个计算两个整数的函数,应该将结果返回到 c# (npgsql) 控制台,我不知道我的错误在哪里,因为调试器没有对我这有帮助. 所以首先是 c# 和函数的代码. ...cmd.Parameters["x"].Value = 20;cmd.Parameters["y"].Value = 22;连接.打开();if (connection.Sta ..
发布时间:2021-06-18 19:36:23 C#/.NET

如何从存储过程(不是函数)返回一个值?

我有一个可以插入、更新或删除表格行的存储过程.当所有参数都用作输入时,它工作正常.但是,我需要返回最后插入行的 ID.为此,我尝试在 INSERT 语句之后使用 INOUT 参数和 RETURNING 来返回 ID. 但是,我不确定如何将返回的 ID 绑定到 INOUT 参数.以下是存储过程的代码: 创建或替换过程 public.spproductinsertupdatedelete(_s ..

返回数据立方体的 PostgreSQL 函数

首先,冰山立方体查询定义为 假设我有一个关系 item,location,year,supplier,unit_sales,我想写一个 plpgsql 函数作为图像中查询的包装器,用于指定参数 N,像这样: 创建或替换函数 iceberg_query(百分比整数)返回立方体/* 代码在这里 */作为$$宣布数字整数;开始从销售中选择 count(*) 到 numrows;选择项目、地点、年 ..
发布时间:2021-06-12 19:00:10 其他开发

在 PostgreSQL 中替换 MySQL 的变量?

我们经常使用快速一次性 SQL 文件在现有数据库中插入或更新数据.SQL 通常由开发人员编写,在开发系统上进行测试,然后使用 psql -U dbuser dbname psql -U dbuser dbname . 一个(微不足道的)示例可能如下所示: INSERT INTO 员工 (公司 ID,名称,位置,由...制作,last_modified_by) 值((从公司中选择 ID WH ..
发布时间:2021-06-05 19:07:13 数据库

在多个表中插入动态列列表的功能

我想在PostgreSQL中做类似的事情. 我尝试过: 创建或替换功能create_patient(_name文本,_email文本,_phone文本,_密码文字,_field1文本,_field2文本,_field3时间戳,_field4文本,OUT _pid整数,OUT _id整数)返回记录AS$$宣布_id整数;_type文字;_pid整数;开始_type:='病人';插入患者(姓名 ..

如何在plpgsql中编写一个函数,该函数将日期与带有时区的时间戳进行比较?

我想编写一个函数,该函数返回一个表,其中包含 firstDate 和 lastDate 之间的所有行.这些行的数据类型为没有时区的时间戳.它们还必须具有特定的节点ID. 这是我的功能: 创建或替换功能get_measurements_by_node_and_date(nodeID INTEGER,firstDate日期,lastDate日期)回报表(measurement_id INTEG ..
发布时间:2021-05-09 19:50:27 其他开发

如何在Postgresql函数中使用变量进行循环查询

我在Postgresql(版本9.4.4)中有一个相当复杂的功能,需要一点帮助. 我在函数中声明了这样一个循环(下面有很多工作): CREATE OR REPLACE函数getRSI(psymbol varchar,带时区的pstarttime时间戳,带有时区的pendtime时间戳,产量双精度,ptable varchar)返回seti rsi AS$ BODY $宣布row_data ..
发布时间:2021-05-03 19:09:31 其他开发

PostgreSQL:检查触发器函数中的NEW和OLD

我想创建一个对行进行计数并更新另一个表中的字段的触发器.我当前的解决方案适用于INSERT语句,但是当我删除一行时失败. 我当前的功能 创建或替换功能update_table_count()RETURNS触发为$$DECLARE updatecount INT;开始选择count(*)到updatecount来自source_table其中id = new.id;更新dest_table设 ..
发布时间:2021-04-28 20:33:20 其他开发