在没有PL/pgSQL的PostgreSQL中迭代select结果
我目前正在开发一个系统,用于处理学校建筑中班级和隔间的不同预订。我的方式是,当你预订教室时,你会自动预订教室内的每个隔间 我需要在纯SQL中迭代select的结果,而不使用PL/pgSQL来实现这一保留,因为在查询之前还不清楚教室有多少隔间 我已经尝试过PL/pgSQL,虽然它工作得很好,但我需要一种不使用PL/pgSQL满足类需求的方法。下面是一个带有FOR关键字的PL/pgSQL实现示例在没有PL/pgSQL的PostgreSQL中迭代select结果,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,我目前正在开发一个系统,用于处理学校建筑中班级和隔间的不同预订。我的方式是,当你预订教室时,你会自动预订教室内的每个隔间 我需要在纯SQL中迭代select的结果,而不使用PL/pgSQL来实现这一保留,因为在查询之前还不清楚教室有多少隔间 我已经尝试过PL/pgSQL,虽然它工作得很好,但我需要一种不使用PL/pgSQL满足类需求的方法。下面是一个带有FOR关键字的PL/pgSQL实现示例 CREATE OR REPLACE FUNCTION createReservationClass(p_
CREATE OR REPLACE FUNCTION createReservationClass(p_codeBuilding CHAR(2),p_codeClass INT,p_CIP VARCHAR(8),p_date DATE,p_startPeriod INT,p_endPeriod INT,p_description VARCHAR(1024))
RETURNS VOID
AS $$
FOR temprow IN SELECT CODE_CUBICULE FROM public.CUBICULE where CODE_BUILDING = p_codeBuilding AND CODE_CLASS = p_codeClass
LOOP
SELECT createReservationCubicule(p_codeBuilding, p_codeClass, temprow.CODE_CUBICULE, p_CIP, p_date, p_startPeriod, p_endPeriod, p_description);
END LOOP;
END;
$$
LANGUAGE PLPGSQL;
我希望当我得到一个建筑号和一个教室号时,它会自动预订它还有的每个隔间。我不确定我是否有正确的方法,是否有一个更简单的方法去做
唯一的要求是不允许我使用PL/pgSQL编写函数。为什么奇怪的要求不使用PL/pgSQL?但是,您可以使用SQL函数轻松地完成此操作
停止按程序思考,开始用SQL思考。您想做的事情可以通过一个没有显式循环的查询来完成:
SELECT createReservationCubicule(
p_codeBuilding,
p_codeClass,
CODE_CUBICULE,
p_CIP,
p_date,
p_startPeriod
p_endPeriod,
p_description
)
FROM public.CUBICULE
where CODE_BUILDING = p_codeBuilding
AND CODE_CLASS = p_codeClass;
您可能不希望使用EXECUTE语句动态DDL,但希望使用EXECUTE语句。