2016-10-05 109 views
0

式が真であるかどうかをチェックする関数を作成しようとしていますが、関数には合計3つのパラメータがあります。最初のパラメータは式です。たとえば1 < 5となります。postgresql - 入力に「unknown」というタイプがあるため多型を判別できませんでした

2番目と3番目のパラメータは、関数がこのステートメントが真である場合に返すものを知ってみましょう:

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を返します。入力が

を「不明」と入力したため、多型の種類を特定できませんでした :この文のdoesntの仕事 をし、次のエラーメッセージが表示されます
SELECT IFF(false,'',''); 

答えて

0

PostgreSQLの文字列リテラルは、タイプunknownです。

あなたは明示的に目的の型にキャストすることによって問題を解決することができます:

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

ありがとうございました。今、私は分かる。 – DarrenW

関連する問題