مرکزی مواد پر جائیں
ماڈیول 12 · سبق 2 از 4کورس میں 46/57~15 min
ماڈیول اسباق (2/4)

PL/pgSQL کے ساتھ جدید منطق

LANGUAGE sql میں لکھے گئے فنکشنز صرف ایک کے بعد ایک معیاری سوالات چلا سکتے ہیں۔ اگر ہمیں کچھ زیادہ ایڈوانس کی ضرورت ہے جیسے کہ "اگر داخل کردہ کل 100 سے زیادہ ہے تو رعایت کا اطلاق کریں"، سادہ ننگا ایس کیو ایل خود ایسا نہیں کرسکتا۔ ہمیں PL/pgSQL استعمال کرنے کی ضرورت ہے، ایک مکمل طریقہ کار پروگرامنگ زبان جو پوسٹگریس میں بنائی گئی ہے۔

PL/pgSQL میں ہم BEGIN .. END، متغیرات، اور مشروط بیانات سے بنی کلاسک باڈیز شامل کرتے ہیں۔

SQL
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 میں لکھیں گے، انہیں محفوظ، تیز فنکشنز میں پیک کر کے ڈیٹا کے قریب بہت کم تاخیر کے ساتھ انجام دیا جائے گا!

خود ہی آزمائیں۔

ورزش#sql.m12.l2.e1
کوششیں: 0لوڈ ہو رہا ہے…

ہم ایک پیچیدہ فنکشن چاہتے ہیں جو اپنے آپ کو بدل دے اگر یہ پہلے سے موجود ہو ('get_price_label')، 'قیمت' کو بطور NUMERIC قبول کرے، اور ایک لفظی متن لوٹائے۔\nPL/pgSQL استعمال کریں۔ BEGIN کھولیں۔\nمنطق لکھیں: اگر قیمت> 100.00 ہے تو 'پریمیم' سٹرنگ لوٹائیں۔ ELSE 'Economico' واپس کریں۔\nمشروط اختتام کو بند کریں؛ اور جسم.

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

فنکشن بنائیں یا تبدیل کریں get_price_label(قیمت نمبری) ٹیکسٹ واپس کریں بطور $$ شروع کریں اگر قیمت > 100.00 پھر 'پریمیم' واپس کریں؛ دوسری صورت میں واپسی 'اکانومیکو'؛ END IF; اختتام $$ LANGUAGE plpgsql;

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#sql.m12.l2.e2
کوششیں: 0لوڈ ہو رہا ہے…

آپ 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 کوششوں کے بعد حل دستیاب ہے۔