0
テーブルに新しいレコードの数を取得するPostgres関数を書いています。ここでテーブル名は変数です。動的SQLでテーブル名の引数を使用する方法
create or replace function dmt_mas_updates(
tb_name text,
days integer)
returns integer as
$$
declare
ct integer;
begin
execute 'select count(*) from $1 where etl_create_dtm > now() - $2 * interval ''1 days'' '
using tb_name, days into ct;
return ct;
end;
$$ LANGUAGE 'plpgsql'
私はselect * from dmt_mas_updates('dmt_mas_equip_store_dim',2);
で関数を呼び出すときに、私は$1
で構文エラーを得ました。
クエリを直接select count(*) from dmt_mas_equip_store_dim where etl_create_dtm >= interval '3 days'
に実行すると、正しく動作します。
なぜこのエラーが発生しますか?私は何を間違えたのですか?