इस क्षण में बहुरूपी प्रकार सख्त हैं - अन्य मामलों में, PostgreSQL सबसे सामान्य प्रकार में स्थिरांक डालने का प्रयास करता है, लेकिन यह चरण बहुरूपी प्रकारों के लिए गायब है - इसलिए इस मामले में, जब आपने समस्या का वर्णन किया है, तो आपको स्पष्ट रूप से डालना होगा या आप बहुरूपी प्रकारों का उपयोग नहीं करना चाहिए। प्लान बी खत्म हो गया है फ़ंक्शन ओवरलोडिंग ।
CREATE OR REPLACE FUNCTION public.icase1(cond1 boolean,
res1 integer, conddefault integer)
RETURNS integer AS $$
SELECT CASE WHEN $1 THEN $2 ELSE $3 END;
$$ LANGUAGE sql;
CREATE OR REPLACE FUNCTION public.icase1(cond1 boolean,
res1 numeric, conddefault numeric)
RETURNS numeric AS $$
SELECT CASE WHEN $1 THEN $2 ELSE $3 END;
$$ LANGUAGE sql;
तब आपका कोड अपेक्षानुसार काम करेगा:
postgres=> select icase1(true, 1.0, 0); icase1 -------- 1.0 (1 row) postgres=> select icase1(true, 1.0, 1.0); icase1 -------- 1.0 (1 row) postgres=> select icase1(true, 1, 0); icase1 -------- 1 (1 row)