- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在一个函数中以两种不同的方式查找数据,并在找到结果后立即返回。
首先我想运行一个查询;
select * from company where company.id = x
然后,如果没有返回结果,请尝试这样的查询
select company.*
from
company
join
company_alias on company.id = company_alias.company_id
where
company_alias.company_alias_id = x;
目前我正在使用union all
create or replace function get_payer(x int) returns company as $$
select * from company where company.id = x
union all
select company.*
from
company
join
company_alias on company.id = company_alias.company_id
where
company_alias.company_alias_id = x;
$$ language sql stable
set search_path from current;
这似乎效率不高,因为我总是运行两个查询。但我不确定如何在 plpgsql 函数中构造一个条件来处理这个问题。
我尝试了以下变体,但没有任何运气
create or replace function payment_claim_payer(x int) returns company as $$
declare found_company company;
begin
select * from company where company.id = x into found_company;
if not exists found_company then
select
company.*
from
company
join
company_alias on company.id = company_alias.company_id
where
company_alias.company_alias_id = x into found_company;
end if;
return found_company;
end;
$$ language plpgsql stable
set search_path from current;
最佳答案
您的最后一次尝试几乎成功。您需要一个 plpgsql(不是 sql)函数并且应该检查特殊变量 found
:
create or replace function payment_claim_payer(x int)
returns company language plpgsql as $$
declare found_company company;
begin
select *
from company
where company.id = x
into found_company;
if not found then
select company.*
from company
join company_alias on company.id = company_alias.company_id
where company_alias.company_alias_id = x
into found_company;
end if;
return found_company;
end;
$$;
关于postgresql - plpgsql 返回一行或另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40755624/
我声明我对对象问题的回答是"is",在我的情况下很方便,但我在这里问专家。 我开发了很多 plpgsql 函数,只有一个是用 C 语言开发的,但我已经明白学习曲线肯定更倾斜。 在可能的情况下,我需要一
我已经用谷歌搜索了很多,并且我有相当不错的阅读理解能力,但我不明白这个脚本是否可以在我的 postgres/postgis 盒子上的多个线程中工作。这是代码: Do $do$ DECLARE
我有一个名为 test 的表,我按名为 daterange 的范围的上限对它进行排序。我想获取此排序数据的顺序并将其保存在名为 bc_order 的同一表的另一列中。 排序的顺序必须保存在bc_ord
我在 Postgres 9.5 数据库中有以下表格: 产品 Column | Type |
我正在使用 PostgreSQL。 我需要使用 PLPGSQL 语言的存储过程,它将返回表 (SET OF RECORDS),其中包含来自 my_table 的前 2 个和后 2 个结果的计数。 例如
我想在我的应用程序中实现分页。我创建了返回记录数作为输出参数和引用游标数据本身的存储过程(具有限制和偏移量)但作为结果——我得到了——“由于 OUT 参数,函数结果类型必须是 bigint” 据我所知
我在数据库后端使用 Postgres 9.3 的报告中有以下相当简单的查询: SELECT * FROM source JOIN sourcelevel USING (source_id) JOIN
我曾经在邮件列表中读过这个条目 http://archives.postgresql.org/pgsql-hackers/2005-06/msg01481.php SELECT * FROM foo_
例如。 --Assigning value to variable in function as a parameter. create or replace function f1(number i
我正在尝试将记录或 json 存储到数组中并从函数返回 JSON: CREATE OR REPLACE FUNCTION stat_per_day() RETURNS json AS $$ DECLA
我正在尝试创建选择数据、处理并返回它们的过程,但我正在努力如何为多列定义数组变量。 这个有效: CREATE OR REPLACE FUNCTION testing_array_return() RE
为了能够在一个数据库中创建应用程序的不同实例,例如测试阶段,我想使用变量作为模式名称。创建表或序列时一切正常,但我想不出一种在函数内部使用变量的优雅方法。我已经阅读了一些文章关于美元引用的字符串常量,
我有一个表“消息”。对于每个 INSERT'ed 行,我必须在同一个表“消息”(用于群发邮件)中插入该行的多个副本。我为它创建了一个触发器(例如一个副本)。 CREATE OR REPLACE FUN
我想在一个函数中以两种不同的方式查找数据,并在找到结果后立即返回。 首先我想运行一个查询; select * from company where company.id = x 然后,如果没有返回结果
我正在将 postgres 与 postgis 结合使用,并且我有一个包含几何数据的表格。现在我想在 plpgsql 中编写一个循环遍历行并将每个几何值存储在数组中的过程。 我应该使用什么返回类型来返
create function dept_count (dept_name varchar(20)) returns integer as $$ begin declare d_count integ
我刚刚开始使用 postgres 并且对整个事情都是陌生的,我正在使用 postgres 9.6 版并试图创建一个新函数但是我不断收到错误 ERROR: syntax error at or near
有没有一种方法可以加速我们的 plpgsql 函数,该函数在循环执行的一个查询中计算某些类型的文档?全部在一个查询中? validador := (select count(id_doc) from
我已经编写了以下函数,但是当我运行它时它没有返回任何内容。有人可以帮助确定问题吗? CREATE OR REPLACE FUNCTION GenerateReadableRandomString (
我有 Postgresql 8.4 我有一个用户表 user_id INT, user_name VARCHAR(255), user_email VARCHAR(255), user_salt VA
我是一名优秀的程序员,十分优秀!