【发布时间】:2022-07-07 23:29:13
【问题描述】:
我有一堆函数返回相同的表模式,所以我必须在这些函数的声明之间一遍又一遍地重复相同的表模式,为了使这个例子简单,假设我们有两个函数返回同一个表架构:
表格:人
CREATE TABLE people(full_name TEXT, age integer);
功能:
CREATE OR REPLACE FUNCTION get_people_by_age(_age integer)
RETURNS TABLE(full_name TEXT, age integer)
LANGUAGE PLPGSQL
AS
$$
BEGIN
RETURN QUERY SELECT * FROM people WHERE people.age = $1;
END
$$
CREATE OR REPLACE FUNCTION get_people_by_name(_full_name text)
RETURNS TABLE(full_name TEXT, age integer)
LANGUAGE PLPGSQL
AS
$$
BEGIN
RETURN QUERY SELECT * FROM people WHERE people.full_name = $1;
END
$$
有没有办法在函数声明中引用现有的表?我想像这样:
CREATE OR REPLACE FUNCTION get_people_by_age(_age integer)
RETURNS TABLE(people)
LANGUAGE PLPGSQL
AS
$$
BEGIN
RETURN QUERY SELECT * FROM people WHERE people.age = $1;
END
$$
CREATE OR REPLACE FUNCTION get_people_by_name(_full_name text)
RETURNS TABLE(people)
LANGUAGE PLPGSQL
AS
$$
BEGIN
RETURN QUERY SELECT * FROM people WHERE people.full_name = $1;
END
$$
我不是在每个函数中声明相同的架构,而是引用一个已经存在的表,这可能吗?
【问题讨论】:
标签: sql database postgresql