plpgsql相关内容
我试图了解PL/pgSQL函数中SELECT语句的查询计划,但不断收到错误。我的问题是:如何获取查询计划? 以下是再现该问题的简单案例。 有问题的表名为test_table。 CREATE TABLE test_table ( name character varying, id integer ); 函数如下: DROP FUNCTION IF EXISTS
..
尝试回答this问题,然后发现我无法解决它。 基本思想:传播两次,从Country_id传播到State_id,State_id传播到City_id两次,然后需要连接Country_id两次。当我们在州级别执行array_agg时,我们需要显式Join Country_id,在城市级别我们也需要使用Join Country_id。 参考链接:https://github.com/hettie-
..
我尝试创建函数 CREATE OR REPLACE FUNCTION public.my_sql_function3(IN inputval integer) RETURNS TABLE("ID" integer, name character varying, cnt integer) AS $BODY$ select t.id, t.name, CAST(count(*) AS
..
我正在尝试创建选择数据、处理并返回数据的过程,但我正在为如何为多列定义数组变量而苦苦挣扎。 这行得通: CREATE OR REPLACE FUNCTION testing_array_return() RETURNS TABLE(id BIGINT) AS $body$ DECLARE l_rows BIGINT[]; BEGIN -- select data usi
..
作为此问题的后续问题: How to "PERFORM" CTE queries in PL/pgSQL? 我尝试: perform (with test_as_cte as(select * from myTable) select * from test_as_cte); 但出现以下错误: SQL Error [42601]: ERROR: subquery mus
..
使用postgres 13.1,我希望将前向填充函数应用于表的所有列。前向填充功能在我前面的问题中进行了解释: How to do forward fill as a PL/PGSQL function 但是,在这种情况下,将指定列和表。我想将该代码应用于任意表,即。指定一个表,并对每一列应用正向填充。 以下表为例: CREATE TABLE example(row_num
..
我正在尝试创建一个等同于 pandas ‘ffill’函数的pl/pgsql。该函数应转发填充空值。在本例中,我可以进行正向填充,但在尝试从我的过程创建函数时出现错误。该函数似乎准确地反映了过程,但我在... as $1部分遇到语法错误。 为什么?我应该读些什么来澄清? -- Forward fill experiment DROP TABLE IF EXISTS example; c
..
我的程序中有一个使用多用户支持的简单错误。我正在使用knex构建SQL查询,并且我有一个描述场景的伪代码: const value = queryBuilder().readDataFromTheDatabase();//executes this //do some other work and get value queryBuilder.writeValueToTheDatabase(
..
我正在尝试在收到文本时返回电影名称以及演员和工作人员的数量。当我输入字符串并使用ilike时,我的查询没有返回匹配的标题。我在前面创建了一个视图,其中包含要在函数中输入的电影标题和剧组人数。 我的代码是: create or replace view movies_crew as select movies.id, movies.title, principals.role from mo
..
我有一个如下所示的Postgres 8.4架构: My_Database |-> Schemas |-> AccountA |-> AccountB |-> AccountC |-> AccountD |-> AccountE ... |-> AccountZ 所有模式都有一个名为produ
..
如何在varchar变量中搜索最长的匹配项?例如,表GOB具有如下条目: magic_word | prize =================== sh| $0.20 sha| $0.40 shaz| $0.60 shaza| $1.50 我想编写一个plpgsql函数,该函数在其他参数中接受一个字符串作为输入(例
..
我想在PostgreSQL的函数内使用保存点功能。我读到在postgres的函数中不能使用保存点。 但在回滚时,我希望回滚到特定点,因为我想使用保存点。另一种方法是什么? 示例代码 CREATE or replace FUNCTION fn_loadData_Subha() RETURNS BIGINT AS $$ DECLARE batchId BIGINT;
..
我尝试在下面的代码示例中模拟我的问题。在下面的代码中,我在一个过程中执行select * from test。我们知道,我们必须为此使用perform关键字。这很管用: perform * from test; 但是,如果我尝试将该简单查询重写为CTE,则无法使其工作。我收到一个语法错误。 with test_as_cte as(select * from test) perfor
..
我有255.25美元。 则该函数可以返回:-Two Hunderty 55 25/100 推荐答案 您可以消费Money类型函数: SELECT replace(cash_words('123'),'dollars and zero cents',''); 退货 “123” 其他备选方案(未选中): https://wiki.postgresql.org/
..
CREATE FUNCTION check_available_flightID(date) RETURNS integer AS $$ BEGIN SELECT FlightID FROM Flight WHERE FlightDate::date = $1; IF NEW.FlightID IS NULL THEN RAISE EXCEPTION 'No filight i
..
我想创建一个函数,它试图将一组值转换为用户指定的类型(默认为文本)。一个非常简单的函数将如下所示: CREATE OR REPLACE FUNCTION cast_to(variable jsonb, key text, target_type anyelement DEFAULT 'TEXT'::regtype) RETURNS anyelement as $$ begin RET
..
在研究从另一个过程调用过程与在Postgres 13中重复代码对性能的影响时,我发现您可以使用CALL或PERFORM来调用其他过程。 我在谷歌上搜索了差异,但我找到的唯一相似的东西是 PL/pgSQL perform vs execute 地址PERFORM与EXECUTE而不是PERFORM与CALL。 有人知道有什么不同吗?我应该使用哪一个(从PL/pgSQL过程调用
..
我想更新postgres表的一列。记录大约有5,500万条,所以我们需要一批10000条记录来更新它。 注意:我们希望更新所有行。但我们不想锁定我们的表。 我正在尝试以下查询- Update account set name = Some name where id between 1 and 10000 我们如何才能对每10000条记录更新一次循环? 如有任何建议和帮助,我
..
我正在尝试提取与特定日期和USER_ID相对应的记录计数,这些记录和USER_ID在数据库中没有对应于下一个稍后日期的USER_ID。这就是我试图实现的方式(使用plpgsql,但不定义函数: DO $BODY$ DECLARE a date[]:= array(select distinct start_of_period from monthly_
..
如何声明具有两个或三个值的类似变量的数组,并在执行过程中随机获取它们? a := [1, 2, 5] -- sample sake select random(a) -- returns random value 有什么建议从哪里开始吗? 推荐答案 CREATE FUNCTION random_pick() RETURNS int AS $func$ DECLARE a
..