0

我想将一个 postgresql 存储过程(它返回一个表作为结果)而不是一个表关联到一个学说实体。

例如:过程 Get_Uuser(sexe, age) 搜索所有用户以获取所选参数并返回 user_id 的集合(例如名称 user_id_rech)。

在 pgsql 中,我可以将此存储过程用作表:

select user_name 
from User 
left join  Get_User('H', 45)
where User.user_id = user_id_rech

存储过程在这里像一个表一样使用。

我不认为原则 2 允许映射存储过程,但我希望有人可以向我确认这一点。

谢谢

4

1 回答 1

1

(写这个作为答案,因为它作为评论太长了。)

无论 Doctrine 是否允许这样做,我都想自愿表示您的查询效率低下(也许非常低效),因为 Postgres 将无法估计Get_User()将返回多少行。

很可能您的函数只是 in 的包装器return query select ...plpgsql或者如果以普通方式编写,则相当于 SQL sql。如果是这样,请考虑改为创建视图。这将允许 Postgres 在需要时重写查询,以及对表内容使用适当的统计信息,并且可能允许您完全摆脱连接。

更好的是,直接发出查询。如果您经常使用它,请创建一个返回它的函数,以便进一步过滤。

于 2013-06-10T12:14:38.433 回答