தொகுதி பாடங்கள் (2/4)
PL/pgSQL உடன் மேம்பட்ட தர்க்கம்
LANGUAGE sql இல் எழுதப்பட்ட செயல்பாடுகள் நிலையான வினவல்களை ஒன்றன் பின் ஒன்றாக மட்டுமே இயக்க முடியும். "உள்ளீடு செய்யப்பட்ட மொத்தம் 100ஐ விட அதிகமாக இருந்தால், தள்ளுபடியைப் பயன்படுத்துங்கள்" போன்ற மேம்பட்ட ஏதாவது தேவைப்பட்டால், வெறும் SQL அதைச் செய்ய முடியாது. நாம் PL/pgSQL ஐப் பயன்படுத்த வேண்டும், இது Postgres இல் கட்டமைக்கப்பட்ட ஒரு முழு அளவிலான செயல்முறை நிரலாக்க மொழியாகும்.
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 எனில், 'பிரீமியம்' என்ற சரத்தை திரும்பவும். மற்றபடி 'எகனாமிகோ' திரும்பவும்.\nநிபந்தனை முடிவை மூடு; மற்றும் உடல்.
குறிப்பைக் காட்டு
செயல்பாட்டை உருவாக்கவும் அல்லது மாற்றவும் get_price_label(விலை NUMERIC) வாசகத்தை $$ BEGIN எனத் திருப்பியனுப்பினால் விலை > 100.00 பிறகு 'பிரீமியம்' திரும்பவும்; மற்றபடி திரும்ப 'எகனாமிகோ'; முடிவு IF; முடிவு; $$ மொழி plpgsql;
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
BEGIN க்கு முன் DECLARE முக்கிய வார்த்தையுடன் தற்காலிக மாறிகளை அறிவிக்கலாம்.\nஒரு செயல்பாட்டை எழுதவும் 'saluta_utente(userid INTEGER)' -> TEXT, PL/pgSQL லாஜிக்கைத் தருகிறது.\nஅதன் உள்ளே 'nome_utente' என்ற சரம் மாறியை அறிவிக்கவும். 'வாடிக்கையாளர்களை' மாறும் வகையில் வினவுவதன் மூலம் first_name' என்ற சிறப்புப் பிரிவைப் பயன்படுத்தி 'firm_name INTO nome_utente இலிருந்து தேர்ந்தெடுக்கவும்... எங்கிருந்து ஐடி = userid'. இறுதியாக, RETURN மாறியை 'Ciao' ஆக இணைக்கிறது.
குறிப்பைக் காட்டு
nome_utente உரையை அறிவிக்கவும்; \nBEGIN nome_utente INTO முதல்_பெயரை தேர்ந்தெடு... \n 'Ciao ' || பெயர்_உட்டென்ட்;
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்