有another question with this title-很抱歉重复,但是我根本无法理解该问题的答案,因此我认为其他很多人也不会,因此明确答案将很有用。
我在Postgres工作。我有一个名为duplicate_project
的存储过程,它有一个参数,即项目ID。
我想在SELECT查询的WHERE子句中添加动态参数,以避免必须对数字进行硬编码。
所以我想避免硬编码:
SELECT duplicate_project(578);
而是这样:
SELECT duplicate_project(SELECT project_id FROM folder WHERE name='foo' LIMIT 1);
显然这是行不通的,但是有一种简单的方法可以做到吗?
答案 0 :(得分:1)
您的意思是这样的吗?
select duplicate_project(f.project_id)
from folder f
where name = 'foo'
limit 1;
实际上不需要limit
。在这种情况下,对于返回的每个project_id,您将获得多行显示duplicate_project()
的结果。
或者:
SELECT duplicate_project( (SELECT project_id FROM folder WHERE name='foo' LIMIT 1) );
答案 1 :(得分:0)
一种方法是标量子查询:
SELECT duplicate_project( (SELECT project_id FROM folder WHERE name='foo' LIMIT 1) );
另一种方法是使用FROM
子句:
SELECT duplicate_project(x.project_id)
FROM (SELECT project_id FROM folder WHERE name = 'foo' LIMIT 1) x;