绝对新秀问题。在课程中,我们使用Postgressql函数,例如:
CREATE FUNCTION Raptor_lastSurveyDate1(bigint) RETURNS date As $$
SELECT max(date) FROM raptor_surveys WHERE nest=$1;
$$ LANGUAGE SQL
或:
CREATE FUNCTION Raptor_lastSurveyDate2(bigint) RETURNS date As $$
SELECT date FROM raptor_surveys WHERE nest=$1 ORDER BY date DESC LIMIT 1;
$$ LANGUAGE SQL
这个$ 1参数是什么意思?
附录:
select * from raptor_surveys delivers this table:
答案 0 :(得分:3)
$1
references第一个参数传递给函数,$2
将引用第二个参数,依此类推。
在$1
作为参数“名称”的使用之前,在Postgres 9.2中为SQL函数引入了命名参数
对于任何现代Postgres版本,我都会重写它以使用命名参数:
CREATE FUNCTION Raptor_lastSurveyDate1(p_some_value bigint)
RETURNS date
As $$
SELECT max(date)
FROM raptor_surveys
WHERE nest = p_some_value;
$$ LANGUAGE SQL
答案 1 :(得分:2)
传递给函数的参数用标识符$ 1,$ 2等命名。(可选)可以为$ n参数名称声明别名,以提高可读性。 https://www.postgresql.org/docs/current/plpgsql-declarations.html
答案 2 :(得分:2)
$1
是对该函数第一个参数的引用。您的函数都有一个bigint
类型的参数。在函数体内,$1
可以引用此参数。
有关更多详细信息,请参见文档:https://www.postgresql.org/docs/current/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS