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

PostgresのselectクエリのFROMでスキーマ名とテーブル名を動的に渡します

    スキーマとテーブルにこれらのローカル変数は必要ありません。formatオプションを使用してクエリを作成し、EXECUTE 動的に実行するには

    CREATE OR REPLACE FUNCTION xx.fn_build_test_(
     IN p_var_archive_schema character varying,
     IN  p_var_archive_table character varying )
     RETURNS record AS
     $BODY$
     DECLARE
      l_var_test VARCHAR[];
    
     BEGIN
    
     SELECT  array
      ( SELECT TO_CHAR(column_name,'YYYYMMDD')
        FROM "test_table"
       WHERE col1 = 1
       ) INTO l_var_test;
    
       EXECUTE format (
         'select col_name FROM %I.%I',
             p_var_archive_schema,p_var_archive_table) 
          --INTO rec_variable;
    END;
    $BODY$
    LANGUAGE plpgsql
    VOLATILE SECURITY INVOKER; 
    

    動的クエリの結果を返したい場合は、

    を使用できます。

    RETURNS TABLE オプションを選択してから、RETURN QUERY EXECUTEを実行します。 クエリの結果を返します。



    1. スプリングブートにおける2つのエンティティ間の多対多の関係

    2. エンベロープを取得します。つまり、重複する期間

    3. PL/SQLはINCLAUSEでVARRAYを使用します

    4. 'X'キロメートル(またはマイル)内の都市の検索