मॉड्यूल पाठ (1/4)
यूडीएफ और बेस एसक्यूएल
अब तक हम Node.js सर्वर से प्रश्न भेजते रहे हैं। लेकिन यदि एक सूत्र का उपयोग दर्जनों विभिन्न प्रश्नों में किया जाता है (उदाहरण के लिए वैट सहित अंतिम कीमत की गणना), तो जावास्क्रिप्ट में गणित की नकल क्यों करें? एसक्यूएल फ़ंक्शंस (उपयोगकर्ता परिभाषित फ़ंक्शंस - यूडीएफ) आइए हम डीबी के अंदर ही "मैक्रोज़" बनाएं।
यहां गणितीय SQL मैक्रो बनाने का तरीका बताया गया है:
CREATE OR REPLACE FUNCTION calculate_tax(price NUMERIC)
RETURNS NUMERIC AS $$
SELECT price * 1.22;
$$ LANGUAGE sql;एक बार जब यह कमांड चलता है, तो फ़ंक्शन हमारे डेटाबेस में हमेशा के लिए रहता है। इसे किसी भी क्वेरी से कॉल किया जा सकता है:
SELECT name, calculate_tax(unit_price) AS price_with_tax FROM products;गतिशील रचना
हम जितने चाहें उतने वेरिएबल परिभाषित कर सकते हैं, उनके प्रकार निर्दिष्ट कर सकते हैं, और LANGUAGE sql क्वेरी चलाएंगे और डॉलर चिह्नों $$ के बीच रखे गए अंतिम विवरण को वापस लौटाएंगे।
खुद कोशिश करना
'get_full_name' नामक एक सरल कॉल करने योग्य फ़ंक्शन बनाएं जो दो टेक्स्ट पैरामीटर ('पहला_नाम' टेक्स्ट, 'अंतिम_नाम' टेक्स्ट) स्वीकार करता है।\nइसे एक टेक्स्ट मान लौटाना होगा।\nअंदर, एक छोटा सा चयन करें जो दो तर्कों को उनके बीच एक ही स्थान के साथ जोड़ता है, और इसे भाषा एसक्यूएल के रूप में घोषित करता है।
संकेत दिखाएँ
फ़ंक्शन बनाएं या बदलें get_full_name(first_name TEXT, Last_name TEXT) टेक्स्ट को $$ के रूप में लौटाता है, पहले_नाम का चयन करें || ' '|| उपनाम; $$ भाषा एसक्यूएल;
3 प्रयासों के बाद समाधान उपलब्ध है
अधिक उन्नत यूडीएफ में हम संपूर्ण क्वेरीज़ को एम्बेड कर सकते हैं। एक फ़ंक्शन 'get_customer_count()' बनाएं जो कोई पैरामीटर स्वीकार नहीं करता है और एक पूर्णांक लौटाता है।\nअंदर, एक छोटा सा 'ग्राहकों से COUNT(id) चुनें' चलाएँ।\nइसे शुद्ध sql भाषा के रूप में घोषित करें।
संकेत दिखाएँ
सावधान रहें: COUNT एक बिगिंट लौटाता है, रिटर्न प्रकार से मिलान करने के लिए इसे पूर्णांक पर डालें! फ़ंक्शन बनाएं या बदलें get_customer_count() पूर्णांक को $$ के रूप में लौटाता है ग्राहकों से कास्ट (COUNT(id) को पूर्णांक के रूप में) चुनें; $$ भाषा एसक्यूएल;
3 प्रयासों के बाद समाधान उपलब्ध है