आप फ़ंक्शन को काफी हद तक सरल बना सकते हैं। (प्रश्न के लिए सरलीकृत कार्य रखते हुए।)
CREATE OR REPLACE FUNCTION get_geom_difference()
RETURNS integer AS
$BODY$
SELECT num
FROM filedata
WHERE num = 1
LIMIT 1; -- needed if there can be more than one rows with num = 1
$BODY$ LANGUAGE SQL;
हालाँकि, तकनीकी रूप से, आपके पास जो प्रश्न है वह भी काम करेगा - बशर्ते डेटा प्रकार मेल खाता हो। क्या यह? कॉलम है filedata.num
प्रकार का integer
? मैं उदाहरण से यही इकट्ठा करता हूं। आपके अन्य प्रश्न
पर मैं मान रहा थाnumeric
जानकारी के अभाव में। उनमें से कम से कम एक विफल हो जाएगा।
यदि फ़ंक्शन का रिटर्न प्रकार दिए गए मान से मेल नहीं खाता है, तो आपको PostgreSQL फ़ंक्शन से एक त्रुटि मिलती है। ठीक से कॉन्फ़िगर किया गया, आपके PostgreSQL लॉग में इस मामले में विस्तृत त्रुटि संदेश होंगे।
आप क्या देखते हैं, जब आप PostgreSQL में उपरोक्त फ़ंक्शन बनाते हैं और फिर कॉल करते हैं:
SELECT get_geom_difference(1);
psql से . (अधिमानतः उसी सत्र में डेटाबेस, पोर्ट, सर्वर या उपयोगकर्ताओं के मिश्रण को रद्द करने के लिए।)
एक पैरामीटर लेते हुए एक साधारण फ़ंक्शन को कॉल करना और एक स्केलर मान वापस करना बहुत सीधे आगे लगता है। PostgreSQL JDBC मैनुअल का अध्याय 6.1 एक पूर्ण उदाहरण है जो आपके प्रश्न में आपके पास जो कुछ भी है उससे पूरी तरह सहमत है (मेरी विशेषज्ञता जेडीबीसी के बजाय पोस्टग्रेस के साथ है)।