मुझे लगता है कि आपको अपने मामले में VALUES अभिव्यक्ति के अंदर प्रकार निर्दिष्ट करना होगा:
WITH t (f0, f1) as (
values
(1::bigint, 10::bigint),
(2, 20)
)...
आपको केवल मानों के पहले सेट के प्रकारों की आवश्यकता है, PostgreSQL बाकी का अनुमान लगा सकता है।
उदाहरण के लिए, मान लें कि हमारे दो कार्य हैं:
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;
आपको दो int
देगा नोटिस जबकि
WITH t (f0, f1) as (
values
(1::bigint, 10::bigint),
(2, 20)
)
select f(f0, f1) from t;
आपको दो bigint
देगा नोटिस।