小编Han*_*ans的帖子

将函数参数添加到 SQL 查询 WHERE 子句

我在 Java 中有一个 Web 应用程序,它使用查询。我不想把查询写成Java,所以我做了一个函数:

CREATE OR REPLACE FUNCTION testFunc(inputs text) RETURNS TABLE(...) AS 
$$
    SELECT .... FROM ...
    JOIN ...
    where true
    ;
$$
LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)

我希望函数参数 INPUTS 也位于 WHERE 子句中,因此如果输入是

AND speed = 0 AND ....
Run Code Online (Sandbox Code Playgroud)

Where 子句看起来像

where true AND speed = 0 AND ... 
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

编辑

也可以接受许多参数(a int、b string、c string ..)但是我需要有

WHERE speed = * AND stop = * AND ...
Run Code Online (Sandbox Code Playgroud)

这是不可接受的。我怎样才能做到这一点?

或者我可以在里面放一个 if 语句吗?喜欢

Select .. . from ...
JOIN ... 
WHERE true
IF (a …
Run Code Online (Sandbox Code Playgroud)

postgresql dynamic-sql java functions

7
推荐指数
1
解决办法
1万
查看次数

多次调用 UPSERT 函数到不同的输入

我有一个功能:

merge_vehicles(vid, cid, vname, reg_no, name, name_1st)
Run Code Online (Sandbox Code Playgroud)

我可以在输入上多次调用它吗

(2335, 55, '246BDH', '246BDH', '811', 1),
(2336, 55, '038THX', '038THX', '831', 1),
....
Run Code Online (Sandbox Code Playgroud)

该函数是一个UPSERT实现返回void. 这是一个仓库数据库(事实表)。我们有一个实时数据库,每小时可以获取 1000 多个输入。我们想使用此命令将我们的数据与新数据合并。

它是一个表函数。(我已经为我们拥有的每个表定义了类似的函数 - 即 5。)结果是,它将更新现有行(如果存在),否则插入新行。

Postgres 版本是 9.3。

函数是此处接受的答案的一个版本:

postgresql functions upsert

2
推荐指数
1
解决办法
1607
查看次数

标签 统计

functions ×2

postgresql ×2

dynamic-sql ×1

java ×1

upsert ×1