1
我試圖在我的函數中將數據插入到複合數組類型中。它應接受來自複合數組類型的INPUT參數的數據,並將數據存儲到相同類型的OUPUT參數中。PostgreSQL中的組合數組類型作爲OUTPUT參數
CREATE TYPE public.type_x_type AS (x integer);
CREATE TYPE public.type_y_type AS(x integer,y integer);
我的功能是
CREATE OR REPLACE FUNCTION GET_PRICE_PC_X
(
IP_PRICE_INFO IN TYPE_X_TYPE[],
PC_COST OUT TYPE_Y_TYPE[],
OP_RESP_CODE OUT VARCHAR,
OP_RESP_MSG OUT VARCHAR
)
RETURNS RECORD AS $$
DECLARE
SELECTED_PRICE CURSOR(IP_PFCNTR INT)
FOR
SELECT ID, PHONE FROM CUSTOMER WHERE ID=IP_PFCNTR;
J NUMERIC(10);
BEGIN
J := 0;
FOR I IN ARRAY_LOWER(IP_PRICE_INFO,1) .. ARRAY_UPPER(IP_PRICE_INFO,1)
LOOP
FOR K IN SELECTED_PRICE(IP_PRICE_INFO[I].X)
LOOP
PC_COST := ROW(K.ID,K.PHONE);
END LOOP;
END LOOP;
OP_RESP_CODE :='000';
OP_RESP_MSG :='Success';
EXCEPTION
WHEN OTHERS THEN
OP_RESP_CODE :='200';
OP_RESP_MSG :=SQLERRM;
END;
$$ language 'plpgsql';
select * from GET_PRICE_PC_X(ARRAY[ROW(1)] :: TYPE_X_TYPE[]);
而且我得到下面的錯誤。
PC_COST | OP_RESPONSE_CODE | OP_RESP_MSG
---------------------------------------------------------
| 200 | malformed array literal: "(1,30003)"
我將在某處調用OUT類型,所以我需要將數據插入到數組中。
你好帕維爾,你真的讓我的代碼看起來很賤,很不自在。 :)感謝您的幫助。我有一個問題。我如何從輸出訪問一列。我的輸出看起來像這樣「{」(31,23423423)「,」(1,300074321)「}」。爲什麼PC_COST:='{}';這是否像初始化某些東西? – user1720827
(unnest(result))。field; '{}'是空數組的特殊字面值。 PC_COST的默認值爲NULL,並且NULL + any再次爲NULL - 所以PC_COST必須初始化爲空數組 - '{}' –