我做了一个简单的自定义类型:如何在PostgreSQL中将自定义类型的多维数组作为函数参数传递?
CREATE TYPE public."FriendDetails" AS
("Email" character varying,
"Name" character varying);
ALTER TYPE public."FriendDetails"
OWNER TO postgres;
要在下面的函数被使用(它只是返回一个字符串 - contact!
):
CREATE OR REPLACE FUNCTION public."addFriend"(
"GroupName" character varying,
friends "FriendDetails"[])
RETURNS character varying AS
$BODY$BEGIN
RETURN "contact!";
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION public."addFriend"(character varying, "FriendDetails"[])
OWNER TO postgres;
使用pgAdminIII生成上面的代码。
我试过如下进行查询:
select addFriend('Champs',ARRAY[['qwe','asd'],['zxc','rty']]::public."FriendDetails"[]);
而且得到了一个错误:
ERROR: malformed record literal: "qwe"
LINE 1: select addFriend('Champs',ARRAY[['qwe','asd'],['zxc','rty']]...
^
DETAIL: Missing left parenthesis.
********** Error **********
ERROR: malformed record literal: "qwe"
SQL state: 22P02
Detail: Missing left parenthesis.
Character: 34
我试图取代花括号({}),并且失去了ARRAY
,但似乎没有任何工作 - 他们会导致语法错误。
有人可以通过使用(1)大括号和(2)通过使用ARRAY
构造函数,来示范应该如何调用此方法的语法。
[综合Value Input](http://www.postgresql.org/docs/9.5/static/rowtypes.html#AEN8006) – Abelisto