【发布时间】:2018-02-20 06:00:59
【问题描述】:
我有一个SELECT 语句的一部分,它是一组相当长的条件语句。我想把它放到一个函数中,这样我就可以在需要使用它的任何表上更有效地调用它。
所以而不是:
SELECT
itemnumber,
itemname,
base,
CASE
WHEN labor < 100 AND overhead < .20 THEN
WHEN .....
WHEN .....
WHEN .....
.....
END AS add_cost,
gpm
FROM items1;
我只能这样做:
SELECT
itemnumber,
itemname,
base,
calc_add_cost(),
gpm
FROM items1;
是否可以将SELECT 的一部分添加到函数中,以便仅通过调用函数来注入?
我正在对文档和 Google 进行分类,如果使用 plpgsql 语言而不是 sql 语言创建函数似乎是可能的。但是,我正在阅读的内容不是很清楚。
【问题讨论】:
-
case 语句需要一个存储过程。只需谷歌它,您的问题就会得到解决。
-
@AnkitBajpai:Postgres 中没有真正的“存储过程”。只是功能,几乎但不完全相同。 (我们需要的只是一个函数。)
-
顺便说一句,您刚刚结束了您的相关问题 (stackoverflow.com/questions/46164931/…) - 是 一种使用可变表类型作为输入的方法 - 并使其看起来像生成的列。如果您仍然需要此问题,请重新打开其他问题。
-
谢谢!我认为您在下面的回答有助于回答这个问题,但我绝对愿意提供任何其他信息。
-
@ErwinBrandstetter,感谢您纠正 m。我从来不知道 PostGres 从不支持过程。
标签: sql database postgresql function plpgsql