plpgsql相关内容
在阅读了 Postgres 手册和这里的许多帖子之后,我写了这个函数来解决我在安全方面的所有发现.效果很好,可以满足我的所有需求. 接受一个json,每个键都有一个数组[visible, filter, arg1, optional arg2] SELECT public.goods__list_json2('{"name": [true, 7, "Ad%"], "category":
..
我想跟踪函数内的执行时间.例如,我有以下状态跟踪表: CREATE TABLE status_table(run_id 数字非空,start_ts 时间戳(6)不带时区 NOT NULL,end_ts 时间戳(6) 不带时区 NOT NULL)和 (OIDS=FALSE)随机分布; 我有以下示例函数,它使用 PG_SLEEP(5) 来模拟我的函数实际执行的操作: CREATE OR REP
..
我来自 SQL Server 背景,其中在存储过程中使用/鼓励使用“@"符号.这很有用,因为您可以轻松查看什么是列以及什么是值.例如. CREATE PROCEDURE Foo@Bar VARCHAR(10),@Baz INT作为开始插入 MyTable (酒吧,巴兹)值 (@酒吧,@巴兹)结尾 我知道我只能使用序数位置,但我们存储的一些过程有 20 个左右的参数,并且命名参数使其在 IMO
..
我有一个查询,如果缺少某个列,我基本上想要一个回退值.我想知道我是否可以纯粹在我的查询中处理这个问题(而不是先探测并发送一个单独的查询.本质上,我正在寻找一个与 COALESCE 等效的处理缺失列的情况. 想象以下 2 个表格. T1身份证 |标题 |额外的1 |价值- 和 -T2身份证 |标题1 安 我希望能够使用相同的查询从这些表中的任何一个中进行选择. 例如,如果 t2 实际
..
我很难理解 Postgres 中的事务.我有一个程序可能会遇到异常.到目前为止,我可能希望在程序的某些部分提交我的工作,以便在发生异常时不会回滚. 我希望在程序结束时有一个异常处理块,我可以在其中捕获异常并将异常中的信息插入到日志记录表中. 我将问题归结为一个简单的过程,如下所示,该过程在 PostgreSQL 11.2 上失败 2D000 在子事务处于活动状态时无法提交PL/pgS
..
我在 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; 它的创建没有错误,但是当我使用这个函数时,它通过以下错误:
..
在 PL/pgSQL 上执行和执行有什么区别? 来自手册: 有时对表达式或 SELECT 查询求值但丢弃结果很有用,例如在调用具有副作用但没有有用结果值的函数时.要在 PL/pgSQL 中执行此操作,请使用 PERFORM 语句. 但是,当我尝试以下操作时: 执行'create table foo as (select 1)'; 什么都没发生.虽然这个查询应该有副作用(创建表
..
我想创建一个 postgres 函数来构建它的列集即时返回;简而言之,它应该包含一个键列表,构建每个键一列,并返回包含任何设置的记录列是.简而言之,代码如下: CREATE OR REPLACE FUNCTION reports.get_activities_for_report() RETURNS int[] AS $F$开始返回数组(SELECT activity_id FROM publi
..
我有一个问题,我在 postgresql 中有一个计算两个整数的函数,应该将结果返回到 c# (npgsql) 控制台,我不知道我的错误在哪里,因为调试器没有对我这有帮助. 所以首先是 c# 和函数的代码. ...cmd.Parameters["x"].Value = 20;cmd.Parameters["y"].Value = 22;连接.打开();if (connection.Sta
..
有人可以礼貌地解释一下这种疯狂吗? INSERT INTO "dbo"."UserProfile" ("FirstName")值('约翰')RETURNING "UserProfileId" INTO _UserProfileId; 抛出一个模棱两可的引用错误,但它可以正确执行: INSERT INTO "dbo"."UserProfile" ("FirstName")值('约翰')RETU
..
我有一个可以插入、更新或删除表格行的存储过程.当所有参数都用作输入时,它工作正常.但是,我需要返回最后插入行的 ID.为此,我尝试在 INSERT 语句之后使用 INOUT 参数和 RETURNING 来返回 ID. 但是,我不确定如何将返回的 ID 绑定到 INOUT 参数.以下是存储过程的代码: 创建或替换过程 public.spproductinsertupdatedelete(_s
..
首先,冰山立方体查询定义为 假设我有一个关系 item,location,year,supplier,unit_sales,我想写一个 plpgsql 函数作为图像中查询的包装器,用于指定参数 N,像这样: 创建或替换函数 iceberg_query(百分比整数)返回立方体/* 代码在这里 */作为$$宣布数字整数;开始从销售中选择 count(*) 到 numrows;选择项目、地点、年
..
我有这个匿名块 PL/pgSQL: 做$$DECLARE secuencial INT;开始SELECT MAX(“CodigoFactura") + 1 INTO secuencial FROM “Factura";IF secencial IS NULL THEN世俗:= 1;万一;RAISE NOTICE '%', secuencial;结尾;$$ 匿名块 PL/pgSQL 从 Npgs
..
我们经常使用快速一次性 SQL 文件在现有数据库中插入或更新数据.SQL 通常由开发人员编写,在开发系统上进行测试,然后使用 psql -U dbuser dbname psql -U dbuser dbname . 一个(微不足道的)示例可能如下所示: INSERT INTO 员工 (公司 ID,名称,位置,由...制作,last_modified_by) 值((从公司中选择 ID WH
..
我想在PostgreSQL中做类似的事情. 我尝试过: 创建或替换功能create_patient(_name文本,_email文本,_phone文本,_密码文字,_field1文本,_field2文本,_field3时间戳,_field4文本,OUT _pid整数,OUT _id整数)返回记录AS$$宣布_id整数;_type文字;_pid整数;开始_type:='病人';插入患者(姓名
..
我想编写一个函数,该函数返回一个表,其中包含 firstDate 和 lastDate 之间的所有行.这些行的数据类型为没有时区的时间戳.它们还必须具有特定的节点ID. 这是我的功能: 创建或替换功能get_measurements_by_node_and_date(nodeID INTEGER,firstDate日期,lastDate日期)回报表(measurement_id INTEG
..
在发生(可预测或不可预测)错误时,是否可以在FOR循环中使用EXCEPTIONs强制继续执行?这是一个代码段: FOR temp_rec IN tlcursor循环tl2:= temp_rec;-要更新的位置-执行“路由"和“更新taxiplocs"行.更新taxilocs20120113设置路线= pgr_trsp('SELECT * FROM th_2po_4pgr',tl1.map_id
..
我在Postgresql(版本9.4.4)中有一个相当复杂的功能,需要一点帮助. 我在函数中声明了这样一个循环(下面有很多工作): CREATE OR REPLACE函数getRSI(psymbol varchar,带时区的pstarttime时间戳,带有时区的pendtime时间戳,产量双精度,ptable varchar)返回seti rsi AS$ BODY $宣布row_data
..
这是我的结构(带有值): user_eval_history表user_eval_id |user_id |is_good_eval-------------- + --------- + --------------1 |1 |Ť2 |1 |Ť3 |1 |F4 |2 |Ťuser_metrics表user_metrics_id |user_id |nb_good_eval |nb_bad_e
..
我想创建一个对行进行计数并更新另一个表中的字段的触发器.我当前的解决方案适用于INSERT语句,但是当我删除一行时失败. 我当前的功能 创建或替换功能update_table_count()RETURNS触发为$$DECLARE updatecount INT;开始选择count(*)到updatecount来自source_table其中id = new.id;更新dest_table设
..