我做了一个简单的自定义类型:
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
构造函数来调用该方法的语法。
您的代码中有错误:
ARRAY[('qwe','asd'),('zxc','rty')]
在函数名称中添加双引号:
select "addFriend"('Champs',ARRAY[('qwe','asd'),('zxc','rty')]::public."FriendDetails"[]);
对字符串常量使用单引号:
RETURN 'contact!';
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句