我正在尝试在PostgreSQL中创建一个函数,该函数将删除表中第一个字母大于给定字母的所有值。任何人都可以向我解释为什么这个例子不起作用(它说在“Z”或附近有语法错误),因为如果我用一些随机字母而不是$ 1来完成这个功能,那么它的工作没有问题。
create function g3_brisi(varchar) returns void as 'delete from prezimena
where prezime between $1 and 'Z';' language sql;
我是PostgreSQL的新手,所以任何帮助都会非常感激。
答案 0 :(得分: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