0
我在Postgres中有一個返回setof複合類型的函數。在返回時,我只能用return next;
而不是用return query
命令來做,爲什麼?在複合類型的Postgres 9.0函數中使用返回查詢
CREATE TYPE return_type AS
(paramname character varying,
value character varying);
CREATE OR REPLACE FUNCTION test(i_param1 character varying, i_param2 character varying)
RETURNS SETOF return_type AS
--this works just fine returning two rows
r.paramname:='row1';
r.value:='myvalue1';
return next r;
r.paramname:='row1';
r.value:='myvalue1';
return next r;
return;
-- with this command I do not get a single row attached in the resultset
return query
select 'row1' as paraName,'myvalue1' as value
UNION ALL
select 'row2' as paraName,'myvalue2' as value;
return;
好@erwin獲取函數結果時,我已經沒有任何異常迄今就類型mistamatch,所以我不認爲這是我的問題。它應該返回一行時返回0行。關於別名,我無權更改。 – Douglas
@Douglas:查詢中的別名不需要*更改。他們只是噪音。至於結果:你看過提供的小提琴嗎?它顯然適用於Postgres 8.4和9.1。再也沒有任何9.0裝置了。 9.0並不是特別受歡迎的版本,現在正在變老。如果這不能解決您的問題,請提供一個*完整的*函數定義 - 就像您應該從頭開始 - 因此我們可以嘗試重現您的發現。 –
是的,你是對的@Erwin,可以肯定地說,我需要使用該版本的Postgres,因爲Postgres的新版本在使用的平臺上存在兼容性問題。我跑了一些測試,看起來你是正確的我需要投入字符串文字,但出於某種原因,它沒有拋出任何錯誤。謝謝! – Douglas