2016-10-05 72 views
0

我正在嘗試編寫一個函數來檢查表達式是否爲true,函數總共有三個參數。第一個參數是表達式,例如1 < 5這是正確的。postgresql - 無法確定多態類型,因爲輸入的類型爲「未知」

第二個和第三個參數讓函數知道該怎麼回報,如果這種說法是正確的:

CREATE OR REPLACE FUNCTION iff(expression boolean ,true_type anyelement , false_type anyelement) 
RETURNS anyelement AS 
$$ 
DECLARE 
BEGIN 
    IF expression = TRUE THEN 
     RETURN true_type; 
    ELSEIF expression = FALSE THEN 
     RETURN false_type; 
    END IF; 
END; 
$$ 
LANGUAGE plpgsql; 

該功能適用​​於整數值,布爾而不是字符串文字。

舉例: 本聲明的作品,並返回2.

SELECT IFF(false,1,2); 

例2: 這種說法不工作,並提供了以下錯誤信息: 無法確定多態類型,因爲輸入類型「未知」

SELECT IFF(false,'',''); 

回答

0

PostgreSQL中的字符串文字的類型爲unknown

可以通過顯式鑄造所需類型解決問題:

SELECT iff(false, ''::text, ''); 
+0

謝謝。我現在知道了。 – DarrenW

相關問題