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

DOsatementのクエリから結果を取得する

    できません DOからの戻り値 声明。代わりにplpgsql関数を作成してください。

    RETURNINGを使用して返品タイプを定義する方法はいくつかあります。 句またはOUT パラメーター。 CREATE FUNCTIONに関するマニュアルをお読みください

    関数から値を返す方法はいくつかあります。 関数からの復帰の章をお読みください マニュアルで。

    特に、テーブルから行全体を返そうとしているので、登録されたタイプのテーブルを関数宣言に使用できます。

    CREATE FUNCTION foo ()
      RETURNING SETOF test_log 
    $func$
    BEGIN
    
    IF 'a' = 'a' THEN
      RETURN QUERY
      SELECT * FROM test_log LIMIT 10;
    ELSE
       RAISE WARNING $$Didn't work!$$;
    END IF;
    
    END
    $func$ LANGUAGE plpgsql;
    

    電話:

    SELECT * FROM foo ();
    

    または、ここでSOを検索してみてください。 多くの関連するコード例

    DOの回避策 ステートメント

    関数を使用できない場合、DOステートメントを使用した中途半端な回避策は、一時テーブルを使用することだけです。

    CREATE TEMP TABLE tbl_tmp AS
    SELECT * FROM test_log LIMIT 0;
    
    $do$
    BEGIN
    
    IF 'a' = 'a' THEN
      INSERT INTO tbl_tmp
      SELECT * FROM test_log LIMIT 10;
    ELSE
       RAISE WARNING $$Didn't work!$$;
    END IF;
    
    END
    $do$ LANGUAGE plpgsql;
    
    SELECT * FROM tbl_tmp;
    

    一時テーブルはセッションの終了時に自動的に削除されます。



    1. FORMAT()を使用してSQLServerの数値に条件付き書式を適用する方法

    2. カーソルを使用せずにSQLで現在の合計を計算するにはどうすればよいですか?

    3. 更新目的でテーブルにデータを表示する

    4. PostgreSQLダンプ一時テーブル