[英]How to pass custom typed multi-dimmensional array as a function parameter in 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
構造函數來調用該方法的語法。
您的代碼中有錯誤:
ARRAY[('qwe','asd'),('zxc','rty')]
在函數名稱中添加雙引號:
select "addFriend"('Champs',ARRAY[('qwe','asd'),('zxc','rty')]::public."FriendDetails"[]);
對字符串常量使用單引號:
RETURN 'contact!';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.