মূল কন্টেন্টে যান
মডিউল 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'), 'price' কে NUMERIC হিসাবে গ্রহণ করে এবং একটি ভারবোস টেক্সট প্রদান করে।\nPL/pgSQL ব্যবহার করুন। BEGIN খুলুন।\nযুক্তি লিখুন: যদি মূল্য > 100.00 হয় তাহলে 'প্রিমিয়াম' স্ট্রিংটি ফেরত দিন। অন্যথায় 'ইকোনমিকো' রিটার্ন করুন।\nকন্ডিশনাল এন্ড বন্ধ করুন; এবং শরীর।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

ফাংশন তৈরি করুন বা প্রতিস্থাপন করুন get_price_label(মূল্য সংখ্যা) $$ শুরু হলে টেক্সট ফেরত দিন > 100.00 তারপর 'প্রিমিয়াম' ফেরত দিন; অন্যথা 'ইকোনমিকো' রিটার্ন; শেষ IF; শেষ; $$ LANGUAGE plpgsql;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#sql.m12.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

আপনি DECLARE কীওয়ার্ড দিয়ে শুরু করার আগে অস্থায়ী ভেরিয়েবল ঘোষণা করতে পারেন।\nএকটি ফাংশন 'saluta_utente(userid INTEGER)' লিখুন -> টেক্সট, PL/pgSQL লজিক রিটার্ন করে।\nএর ভিতরে একটি স্ট্রিং ভেরিয়েবল ঘোষণা করুন 'nome_utente Thevariable,\n BEGINnpoulate TEXT;' এর ভিতরে। প্রথম_নাম ডায়নামিকভাবে 'গ্রাহকদের' বিশেষ ক্লজ ব্যবহার করে জিজ্ঞাসা করে 'প্রথম_নাম INTO nome_utente FROM... WHERE id = userid'। অবশেষে, RETURN ভেরিয়েবলটিকে 'Ciao'-তে সংযুক্ত করে।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

নাম_উটেন্টে পাঠ্য ঘোষণা করুন; \nপ্রথম_নাম বেছে নিন nome_utente... \nRETURN 'Ciao' || nome_utente;

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ