ماڈیول اسباق (2/4)
PL/pgSQL کے ساتھ جدید منطق
LANGUAGE sql میں لکھے گئے فنکشنز صرف ایک کے بعد ایک معیاری سوالات چلا سکتے ہیں۔ اگر ہمیں کچھ زیادہ ایڈوانس کی ضرورت ہے جیسے کہ "اگر داخل کردہ کل 100 سے زیادہ ہے تو رعایت کا اطلاق کریں"، سادہ ننگا ایس کیو ایل خود ایسا نہیں کرسکتا۔ ہمیں 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 قبول کرے، اور ایک لفظی متن لوٹائے۔\nPL/pgSQL استعمال کریں۔ BEGIN کھولیں۔\nمنطق لکھیں: اگر قیمت> 100.00 ہے تو 'پریمیم' سٹرنگ لوٹائیں۔ ELSE 'Economico' واپس کریں۔\nمشروط اختتام کو بند کریں؛ اور جسم.
اشارہ دکھائیں۔
فنکشن بنائیں یا تبدیل کریں get_price_label(قیمت نمبری) ٹیکسٹ واپس کریں بطور $$ شروع کریں اگر قیمت > 100.00 پھر 'پریمیم' واپس کریں؛ دوسری صورت میں واپسی 'اکانومیکو'؛ END IF; اختتام $$ LANGUAGE plpgsql;
3 کوششوں کے بعد حل دستیاب ہے۔
آپ DECLARE کلیدی لفظ کے ساتھ شروع کرنے سے پہلے عارضی متغیرات کا اعلان کر سکتے ہیں۔\nایک فنکشن 'saluta_utente(userid INTEGER)' لکھیں -> TEXT، PL/pgSQL لاجک لوٹاتا ہے۔\nاس کے اندر ایک سٹرنگ متغیر کا اعلان کریں 'nome_utente Thevariable'، BEGINnpoulate TEXT;' کے ساتھ۔ first_name خصوصی شق 'SELECT first_name INTO nome_utente FROM... WHERE id = userid' کا استعمال کرتے ہوئے متحرک طور پر 'گاہکوں' سے استفسار کرتے ہوئے آخر میں، RETURN متغیر کو 'Ciao' سے جوڑتا ہے۔
اشارہ دکھائیں۔
نام_utente متن کا اعلان کریں؛ \nشروع کریں نام_utente میں پہلا_نام منتخب کریں... \nRETURN 'Ciao' || nome_utente؛
3 کوششوں کے بعد حل دستیاب ہے۔