DbUp 在对 PostgreSQL 函数使用 SQL 语言语法时抛出 Npgsql 异常

DbUp throwing Npgsql exception when using SQL-language syntax for PostgreSQL functions

我正在使用 DbUp 部署到 PostgreSQL-14 数据库。当我尝试使用 SQL 语言语法创建函数或过程时,DbUp 抛出 Npgsql.PostgresException 42601,声称存在语法错误。我已经 运行 下面的代码成功地使用了 pgAdmin,所以我不确定为什么 DbUp 很难使用它(除非它不支持 postgres 14?)

这是我的脚本:

CREATE OR REPLACE FUNCTION test_function() RETURNS VARCHAR(11)
LANGUAGE SQL
BEGIN ATOMIC
    SELECT 'Hello World';
END;

这里是错误:

ERROR:  syntax error at end of input at character 114
STATEMENT:  CREATE OR REPLACE FUNCTION test_function() RETURNS VARCHAR(11)
 LANGUAGE SQL
 BEGIN ATOMIC
         SELECT 'Hello World'

我知道我可以用 plpgsql 语言重写该函数,但我想要 SQL 语言提供的依赖项跟踪。

@ChrisKelly 谢谢,我不知道这个新语法!不幸的是,这会破坏 Npgsql 的内部 SQL 解析器,因为分号会导致语句被拆分...我已经打开 this issue 来将其作为 Npgsql 错误进行跟踪;那里建议了一些解决方法。

如果您不能在该问题中使用解决方法,那么正如我之前发布的那样,您可以使用此替代语法,即使它较差(依赖性跟踪等):

CREATE OR REPLACE FUNCTION test_function() RETURNS VARCHAR(11)
LANGUAGE SQL
RETURN 'Hello World';