0

我正在尝试在 PostgreSQL 中创建一个函数,该函数将从表中删除第一个字母大于给定字母的所有值。谁能向我解释为什么这个例子不起作用(它说在“Z”处或附近有语法错误),因为如果我用一些随机字母而不是 $1 做这个超出功能,它可以正常工作。

create function g3_brisi(varchar) returns void as 'delete from prezimena
where prezime between $1 and 'Z';' language sql;

我是 PostgreSQL 的新手,所以非常感谢任何帮助。

4

1 回答 1

1

问题是函数源中的嵌套单引号。

您应该对函数的主体使用“美元报价”,这会使事情变得容易得多:

create function g3_brisi(varchar) 
   returns void as 
$body$
  delete from prezimena
  where prezime between $1 and 'Z';
$body$
language sql;

有关更多详细信息,请参阅手册:http ://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-DOLLAR-QUOTING

于 2013-06-15T21:30:15.660 回答