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