我想从两个变量 p、q 创建一个数组。 这是我的尝试:
DO
$code$
DECLARE
p text := 'Hello';
q text := 'world!';
ta text[]; --text array
BEGIN
ta := {p, q};
RAISE INFO '% %', ta[1], ta[2];
END
$code$;
但是不起作用
postgres=# DO
postgres-# $code$
postgres$# DECLARE
postgres$# p text := 'Hello';
postgres$# q text := 'world!';
postgres$# ta text[]; --text array
postgres$# BEGIN
postgres$# ta := {p, q};
postgres$# RAISE INFO '% %', ta[1], ta[2];
postgres$# END
postgres$# $code$;
ERROR: syntax error at or near "{"
LINE 8: ta := {p, q};
^
我能得到的最好的,有效的是:
DO
$code$
DECLARE
p text := 'Hello';
q text := 'world!';
ta text[]; --text array
BEGIN
RAISE INFO 'p=[%] q=[%]', p, q;
ta := array_append(array_append(ta, p), q);
RAISE INFO '% %', ta[1], ta[2];
END
$code$;
我应该如何在 pl/pgsql 中执行此操作?
只要
p
和 q
具有相同的类型,这就是您问题中的情况:ARRAY[p, q]
是在 postgres 中创建数组的方式。
您的整个更正代码:
DO
$code$
DECLARE
p text := 'Hello';
q text := 'world!';
ta text[]; --text array
BEGIN
ta := ARRAY[p, q];
RAISE INFO '% %', ta[1], ta[2];
END
$code$;