我对postgresql函数有一些问题。 我的表名是人,姓名是文本,年份是整数。
我喜欢写这样的函数:
create function add() returns void as '
insert into people(name, year) VALUES ('danilo', 12)
' LANGUAGE SQL;
我无法插入字符串,例如danilo。
错误:“danilo”或其附近的语法错误
我试过
...
insert into people(name, year) VALUES ( \'danilo\', 12)
...
但不起作用。
这完美无缺:
...insert into people( year) VALUES ( 12)...
这也是:
create function add(text) returns void as '
insert into people(name, year) VALUES ($1, 12)
' LANGUAGE SQL;
select add('danilo');
但是我该怎么做:
...
insert into people(name, year) VALUES ('danilo', 12)
...
任何人都可以帮助我吗?
谢谢。
答案 0 :(得分:1)
你的案例很好,为什么PostgreSQL有自定义字符串分隔符 - 符号$some$
。自定义字符串分隔符应该成对使用。
postgres=# select $_$Hello$_$;
?column?
----------
Hello
(1 row)
撇号没有问题
postgres=# select $_$He'llo$_$;
?column?
----------
He'llo
(1 row)
所以你的代码应该看起来像
create function add(text)
returns void as $$
insert into people(name, year) VALUES ('Hello', 12)
$$ LANGUAGE SQL;
答案 1 :(得分:0)
我有答案:
使用''danilo'',加倍'
通过加倍单引号''
create function add() returns void as '
insert into people(name, year) VALUES (''danilo'', 12)
' LANGUAGE SQL;
答案 2 :(得分:0)
你必须以双单引号逃脱
create function add() returns void as '
insert into people(name, year) VALUES (''danilo'', 12)
' LANGUAGE SQL;