あなたの場合、VALUES式の中でタイプを指定する必要があると思います:
WITH t (f0, f1) as (
values
(1::bigint, 10::bigint),
(2, 20)
)...
必要なのは最初の値のセットの型だけで、PostgreSQLは残りの値を推測できます。
たとえば、次の2つの関数があるとします。
create function f(bigint, bigint) returns bigint as $$
begin
raise notice 'bigint';
return $1 * $2;
end;
$$ language plpgsql;
create function f(int, int) returns int as $$
begin
raise notice 'int';
return $1 * $2;
end;
$$ language plpgsql;
次に
WITH t (f0, f1) as (
values
(1, 10),
(2, 20)
)
select f(f0, f1) from t;
2つのint
を提供します 気づきますが
WITH t (f0, f1) as (
values
(1::bigint, 10::bigint),
(2, 20)
)
select f(f0, f1) from t;
あなたに2つのbigint
を与えるでしょう 通知。