sql >> データベース >  >> RDS >> PostgreSQL

postgreSQLフィボナッチ数列-クエリに結果データの宛先がありません

    あなたは近くにいます。基本的にあなたのSELECT はどこにもつながっておらず、関数ヘッダーはINTを返すことになっていると言っています 価値。純粋なSQLなので CTEを使用したクエリ 、PLPGSQLを使用する必要はありません 、言語タイプもSQLに変更しました

    CREATE OR REPLACE FUNCTION fibonacci (lastN INTEGER) 
    RETURNS SETOF INTEGER LANGUAGE SQL AS $$
    WITH RECURSIVE t(a, b) AS (
        VALUES(0,1)
        UNION ALL
            SELECT GREATEST(a, b), a + b AS a from t
            WHERE b < $1
    )
    SELECT a FROM t;
    $$;
    
    SELECT fibonacci(20);
    

    編集: 要求に応じて、言語PLPGSQLを使用した同じ関数

    CREATE OR REPLACE FUNCTION fibonacci (lastN INTEGER) 
    RETURNS SETOF INT LANGUAGE PLPGSQL AS $$
    BEGIN
    RETURN QUERY WITH RECURSIVE t(a, b) AS (
        VALUES(0,1)
        UNION ALL
            SELECT GREATEST(a, b), a + b AS a from t
            WHERE b < $1
    )
    SELECT a FROM t;
    END $$;
    
    SELECT fibonacci(20);
    



    1. DockerがPostgresqlデータディレクトリを認識しない

    2. 配列をado.netDBParameterの値として渡します

    3. Numpy配列へのMySQLdbクエリ

    4. 結合が存在しないレコードを検索する