Class TCreateProcedureStmt

All Implemented Interfaces:
IRelation, Visitable, Iterator<TSourceToken>
Direct Known Subclasses:
TMssqlCreateProcedure

public class TCreateProcedureStmt extends TRoutine
Create procedure statement. 存储过程如果是 $$ body $$ 形式的,有两种解析方法, 方法1,把 $$ body $$ 中的 body 在 lexical 阶段即分解为独立的 token, 整个 create procedure statement 在 parser 中一次性完成解析 采用这个方法的数据库: greenplum, postgres, redshift, snowflake GSP Java version 2.8.9.3(2024-5-27) [Snowflake] support string literal delimiter $ or ' around procedure definition. '' 中的存储过程代码被 {@link TGSqlParser.expandDollarString()} 方法处理,处理后的代码被解析。 2024/6/22, snowflake create procedure 的 body 如果是采用 $$ body $$, 在 lexer 中分解为独立的 token 方法2,把 $$ body $$ 作为一个整体字符串看待,需要进行二次解析, 都是调用 postgres parser 进行的分析。采用这种方法是,body中用到的 select 等语句用的是 postgres的语法分析,而不是原数据库 select 语句的语法分析,这可能导致不正确的解析结果。 这种方法为历史遗留问题,需要都改为方法1。目前采用这种方法的数据库有: netezza, vertica Supported databases
  • Postgres
  • redshift