条令2 Postgresql存储过程映射
我想将一个postgresql存储过程(返回一个表作为结果)而不是一个表与一个条令实体相关联 例如:程序Get_Uuser(sexe,age)搜索所有用户以获取所选参数,并返回一个用户id集合(例如名称user_id_rech) 在pgsql中,我可以将此存储过程用作表:条令2 Postgresql存储过程映射,postgresql,doctrine-orm,Postgresql,Doctrine Orm,我想将一个postgresql存储过程(返回一个表作为结果)而不是一个表与一个条令实体相关联 例如:程序Get_Uuser(sexe,age)搜索所有用户以获取所选参数,并返回一个用户id集合(例如名称user_id_rech) 在pgsql中,我可以将此存储过程用作表: select user_name from User left join Get_User('H', 45) where User.user_id = user_id_rech 存储过程在这里像表一样使用 我认为条令2
select user_name
from User
left join Get_User('H', 45)
where User.user_id = user_id_rech
存储过程在这里像表一样使用
我认为条令2不允许映射存储过程,但我希望有人能向我证实这一点
谢谢(写这篇文章作为回答,因为它太长了。)
不管条令允许与否,我愿意自愿告诉你,你的查询将是低效的(也许是非常低效的),因为Postgres将无法估计将返回多少行Get\u User()
您的函数很可能只是plpgsql
中的returnqueryselect…
的包装器,或者如果函数是用纯SQL
编写的,那么它就是SQL的等效函数。如果是,请考虑创建视图。这将允许Postgres在需要时重写查询,并对表的内容使用适当的统计信息,并且可能允许您完全摆脱连接
更好的是,直接发出查询。如果您经常使用它,请创建一个函数,返回它,以便进行进一步筛选。谢谢您的回答。Get_user只是一个(非常)简单的示例,用于让我的问题更容易理解。我真正的函数实际上是一个动态查询生成器,它从多个表返回数据。在这种情况下,无法创建视图。注意,您可以告诉PostgreSQL查询通常返回多少行。参见
CREATE FUNCTION