ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 12 · 4లో పాఠం 1కోర్సులో 45/57~15 min
మాడ్యూల్ పాఠాలు (1/4)

UDFలు మరియు బేస్ SQL

ఇప్పటివరకు మేము Node.js సర్వర్ నుండి ప్రశ్నలను పంపుతున్నాము. అయితే డజన్ల కొద్దీ విభిన్న ప్రశ్నలలో ఫార్ములా ఉపయోగించబడితే (ఉదా. VATతో సహా తుది ధరను గణించడం), జావాస్క్రిప్ట్‌లో గణితాన్ని ఎందుకు నకిలీ చేయాలి? SQL ఫంక్షన్‌లు (యూజర్ డిఫైన్డ్ ఫంక్షన్‌లు - UDF) DBలోనే "మాక్రోస్"ని సృష్టిద్దాం.

గణిత SQL మాక్రోను ఎలా సృష్టించాలో ఇక్కడ ఉంది:

SQL
CREATE OR REPLACE FUNCTION calculate_tax(price NUMERIC)
RETURNS NUMERIC AS $$
  SELECT price * 1.22;
$$ LANGUAGE sql;

ఒకసారి ఈ కమాండ్ నడుస్తుంది, ఫంక్షన్ మా డేటాబేస్లో ఎప్పటికీ ఉంటుంది. ఇది ఏదైనా ప్రశ్న నుండి కాల్ చేయవచ్చు:

SQL
SELECT name, calculate_tax(unit_price) AS price_with_tax FROM products;

డైనమిక్ సృష్టి

వాటి రకాలను పేర్కొంటూ మనకు కావలసినన్ని వేరియబుల్స్‌ని నిర్వచించవచ్చు మరియు LANGUAGE sql ప్రశ్నను అమలు చేస్తుంది మరియు డాలర్ చిహ్నాల మధ్య ఉంచిన చివరి స్టేట్‌మెంట్‌ను పరోక్షంగా తిరిగి ఇస్తుంది $$.

మీరే ప్రయత్నించండి

వ్యాయామం#sql.m12.l1.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

రెండు TEXT పారామీటర్‌లను ('మొదటి_పేరు' TEXT, 'చివరి_పేరు' TEXT) ఆమోదించే 'get_full_name' పేరుతో ఒక సాధారణ కాల్ చేయదగిన ఫంక్షన్‌ను సృష్టించండి.\nఇది తప్పనిసరిగా TEXT విలువను అందించాలి.\nలోపల, రెండు ఆర్గ్యుమెంట్‌లను వాటి మధ్య ఒకే ఖాళీతో కలిపే ట్రివియల్ SELECT చేయండి మరియు దానిని భాష sqlగా ప్రకటించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

క్రియేట్ చేయండి లేదా రీప్లేస్ చేయండి ' ' || ఇంటి_పేరు; $$ భాష sql;

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#sql.m12.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

మరింత అధునాతన UDFలలో మేము మొత్తం ప్రశ్నలను పొందుపరచవచ్చు. పారామీటర్‌లను అంగీకరించని మరియు INTEGERని తిరిగి ఇచ్చే 'get_customer_count()' ఫంక్షన్‌ని సృష్టించండి.\nలోపల, 'కస్టమర్‌ల నుండి COUNT(id)ని ఎంపిక చేసుకోండి''.\nదీనిని స్వచ్ఛమైన sql భాషగా ప్రకటించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

జాగ్రత్త వహించండి: COUNT ఒక బిగింట్‌ను అందిస్తుంది, తిరిగి వచ్చే రకానికి సరిపోలడానికి దాన్ని INTEGERకి ప్రసారం చేయండి! ఫంక్షన్‌ని సృష్టించండి లేదా భర్తీ చేయండి get_customer_count() కస్టమర్‌ల నుండి $$ ఎంపిక CAST (COUNT(ID)ని పూర్ణాంకం వలె) పూర్ణాంకం తిరిగిస్తుంది; $$ భాష sql;

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది