आप एक कर्सर का उपयोग कर सकते हैं , लेकिन न्यूनतम गणना के लिए यह बहुत अव्यावहारिक है।
मैं एक अस्थायी तालिका का उपयोग करूंगा/करूंगी उस उद्देश्य के लिए, और डायनामिक SQL . में उपयोग के लिए तालिका नाम पास करें :
CREATE OR REPLACE FUNCTION f_min_id(_tbl regclass, OUT min_id int) AS
$func$
BEGIN
EXECUTE 'SELECT min(id) FROM ' || _tbl
INTO min_id;
END
$func$ LANGUAGE plpgsql;
कॉल करें:
CREATE TEMP TABLE foo ON COMMIT DROP AS
SELECT id, name
FROM users
LIMIT 50;
SELECT f_min_id('foo');
प्रमुख बिंदु
-
पहला पैरामीटर प्रकार का है
regclass
एसक्यूएल इंजेक्शन को रोकने के लिए। dba पर इस संबंधित उत्तर में अधिक जानकारी। एसई । -
मैंने अस्थायी तालिका
ON COMMIT DROP
बनाया है अपने जीवनकाल को वर्तमान लेनदेन तक सीमित करने के लिए। आप जो चाहते हैं वह हो भी सकता है और नहीं भी। -
अधिक पैरामीटर लेने के लिए आप इस उदाहरण का विस्तार कर सकते हैं।
EXECUTE
के साथ डायनेमिक SQL के लिए कोड उदाहरण खोजें ।