gpt4 book ai didi

数据库设计 : select-query over function parameters

转载 作者:行者123 更新时间:2023-11-29 13:36:40 25 4
gpt4 key购买 nike

我想知道这样的事情是否可能:

SELECT * FROM table1 
WHERE a1 = ... AND a2 = ... AND b1 = ... AND b2 = ...

但是,这里真正发生的是,我正在调用一个数据库函数,例如:

func1(a1,a2);

返回类型:

(b1,b2)

所以,这个想法是,从最终用户的角度来看,感觉就像我们只是像往常一样查询一个表,但是,函数调用和由此产生的查询选择对用户是隐藏的,并且是在后台完成的场景。

任何帮助建议数据库中可以实现此目的的可能设计,将不胜感激。 (例如,table1 可以是某种虚拟表或 View )。

最佳答案

我无法找到一种方法来提供您所获得的确切查询。

我最接近的只是调用 from 子句中的函数。语法不同,您在函数调用中指定函数参数而不是 where 子句。

例如:

CREATE OR REPLACE FUNCTION myfun(a1 INT, a2 INT)
RETURNS TABLE (b1 int, b2 int)
AS
$$
BEGIN
RETURN QUERY (SELECT a1+a2 AS b1, a1*a2 AS b2);
END;
$$
LANGUAGE plpgsql;

这让我们调用

select * from myfun(4,5);

b1 b2
---- ----
9 20

我确实看过 Postgresql Rule系统可能能够重写查询并将参数从 where 子句移动到函数调用中,但我找不到方法。

关于数据库设计 : select-query over function parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com