2012-03-20 17 views
3

以下のスクリプトを実行しているときに、以下のエラーが表示されます。私の目標はPostgresでbigintとして1を返す関数を作成することです。助けてください!PostgresのBigintにBigintをキャストする

hashtagpostgresnoobie

ERROR: function result type must be bigint because of OUT parameters

CREATE OR REPLACE FUNCTION GetNumberOne(
    OUT numberone bigint) 
    RETURNS SETOF record AS 
$BODY$ 

    SELECT CAST(1 AS BIGINT) AS "NUMBERONE"; 

$BODY$ 
    LANGUAGE sql VOLATILE; 

答えて

7

あなたは機能を突然出会った)レコードは2と複数のフィールドを必要とします。したがって、変数が1つだけの場合、結果はスカラーでなければなりません。

だから、あなたは、単にコンパイラが求めるものを行うことができます)

CREATE OR REPLACE FUNCTION GetNumberOne(
     OUT numberone bigint) 
     RETURNS bigint AS 
    $BODY$ 

     SELECT CAST(1 AS BIGINT) AS "NUMBERONE"; 

    $BODY$ 
     LANGUAGE sql VOLATILE; 

plpgsqlが例:

CREATE OR REPLACE FUNCTION NumberOne() 
     RETURNS bigint AS 
    $BODY$ 
     DECLARE num bigint; 
     BEGIN 
     num := 1; 
     RETURN num; 
     END 
    $BODY$ 
     LANGUAGE plpgsql VOLATILE; 
     select * from NumberOne() 
+0

私は私の遅さのために謝罪していますが、より具体的に説明してくださいだろうか?私はそれに続いて苦労しました。私は今、約10時間の間、Postgresを使ってきました。 :/ –

+0

昼食後に正確なスニペットを提供します) –

+0

これは簡単であることが判明しました。見てみましょう。 –

関連する問題