మాడ్యూల్ పాఠాలు (2/4)
PL/pgSQLతో అధునాతన తర్కం
LANGUAGE sqlలో వ్రాసిన విధులు ప్రామాణిక ప్రశ్నలను ఒకదాని తర్వాత ఒకటి మాత్రమే అమలు చేయగలవు. మనకు "నమోదు చేసిన మొత్తం 100 కంటే ఎక్కువ ఉంటే, తగ్గింపును వర్తింపజేయండి" వంటి మరింత అధునాతనమైన ఏదైనా అవసరమైతే, సాదా బేర్ SQL దాని స్వంతదానిపై చేయదు. మేము PL/pgSQLని ఉపయోగించాలి, ఇది పోస్ట్గ్రెస్లో నిర్మించబడిన పూర్తి-స్థాయి విధానపరమైన ప్రోగ్రామింగ్ భాష.
PL/pgSQLలో మేము BEGIN .. END, వేరియబుల్స్ మరియు షరతులతో కూడిన స్టేట్మెంట్లతో రూపొందించిన క్లాసిక్ బాడీలను జోడిస్తాము.
CREATE OR REPLACE FUNCTION valuta_cliente(ordini INTEGER)
RETURNS TEXT AS $$
BEGIN
IF ordini > 10 THEN
RETURN 'VIP';
ELSE
RETURN 'Standard';
END IF;
END;
$$ LANGUAGE plpgsql;ఈ శక్తి మనం JSలో వ్రాసే రిపీటీటివ్ లాజిక్ల యొక్క భారీ బ్లాక్లను ఆఫ్లోడ్ చేయడానికి అనుమతిస్తుంది, వాటిని చాలా తక్కువ జాప్యంతో డేటాకు దగ్గరగా అమలు చేయబడిన సురక్షితమైన, వేగవంతమైన ఫంక్షన్లలోకి ప్యాక్ చేస్తుంది!
మీరే ప్రయత్నించండి
ఇది ఇప్పటికే ఉనికిలో ఉన్నట్లయితే ('get_price_label'), 'ధర'ని NUMERICగా అంగీకరించి, వెర్బోస్ TEXTని తిరిగి ఇచ్చే సంక్లిష్టమైన ఫంక్షన్ని మేము కోరుకుంటున్నాము.\nPL/pgSQLని ఉపయోగించండి. BEGINను తెరవండి.\nలాజిక్ను వ్రాయండి: ధర > 100.00 అయితే 'ప్రీమియం' స్ట్రింగ్ను తిరిగి ఇవ్వండి. ELSE రిటర్న్ 'ఎకనామికో'.\nషరతులతో కూడిన ENDని మూసివేయండి; మరియు శరీరం.
సూచనను చూపించు
ఫంక్షన్ని సృష్టించండి లేదా భర్తీ చేయండి get_price_label(ధర NUMERIC) ధర > 100.00 ఉంటే, ఆపై 'ప్రీమియం'ని $$ BEGINగా తిరిగి ఇవ్వండి; ELSE రిటర్న్ 'ఎకనామికో'; ముగింపు IF; ముగింపు; $$ భాష plpgsql;
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
మీరు డిక్లేర్ కీవర్డ్తో BEGINకి ముందు తాత్కాలిక వేరియబుల్లను డిక్లేర్ చేయవచ్చు.\n'saluta_utente(userid INTEGER)' ఫంక్షన్ను వ్రాయండి -> TEXT, PL/pgSQL లాజిక్ను అందిస్తుంది.\nదాని లోపల BEGIN'nome_utente, Thepulate'తో కూడిన స్ట్రింగ్ వేరియబుల్ను డిక్లేర్ చేయండి. 'కస్టమర్లను' డైనమిక్గా ప్రశ్నించడం ద్వారా మొదటి_పేరు 'మొదటి_పేరును nome_utente నుండి ఎంచుకోండి... ఎక్కడ id = userid' అనే ప్రత్యేక నిబంధనను ఉపయోగించి. చివరగా, RETURN వేరియబుల్ని 'Ciao'కి సంగ్రహిస్తుంది.
సూచనను చూపించు
nome_utente TEXT ప్రకటించండి; \nBEGIN nome_utente INTO మొదటి_పేరును ఎంచుకోండి... \n 'Ciao 'ని తిరిగి మార్చండి || పేరు_ఉంటే;
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది