PL/pgSQL中SELECT...INTO语法合规性咨询及官方依据求证
PL/pgSQL中SELECT INTO的位置是否合规?
你的写法完全正确,PostgreSQL的PL/pgSQL支持两种SELECT INTO的语法格式:
- 一种是将
INTO子句放在SELECT列表之后(即你使用的写法) - 另一种是将
INTO子句放在FROM子句之前
官方依据(PostgreSQL文档说明)
PostgreSQL官方文档中关于PL/pgSQL的SELECT INTO语法明确指出:
SELECT可以用两种方式把结果存入变量:要么使用SELECT ... INTO,要么将INTO子句放在SELECT目标列表之后。两种写法在功能上等价,都是将查询结果的第一行赋值给指定变量。
语法验证对比
你的原SELECT语句:
SELECT allergy FROM drugallergy into is_allergic WHERE NEW.drug = drugallergy.allergy AND NEW.patient = drugallergy.patient;
和老师提及的写法:
SELECT into is_allergic allergy FROM drugallergy WHERE NEW.drug = drugallergy.allergy AND NEW.patient = drugallergy.patient;
均为PostgreSQL认可的合法语法,在PL/pgSQL环境中均可正常执行。
补充说明
部分SQL方言(如Oracle的PL/SQL)仅支持INTO放在SELECT之后的写法,但PostgreSQL为兼容不同开发习惯,同时支持两种位置的INTO子句。
内容的提问来源于stack exchange,提问作者enderluca03
相关产品推荐
相关产品推荐

