الانتقال إلى المحتوى الرئيسي
الوحدة 12 · الدرس 1 من 445/57 في الدورة~15 min
دروس الوحدة (1/4)

UDFs وSQL الأساسية

لقد قمنا حتى الآن بإرسال استعلامات من خادم Node.js. ولكن إذا تم استخدام صيغة في العشرات من الاستعلامات المختلفة (على سبيل المثال، حساب السعر النهائي بما في ذلك ضريبة القيمة المضافة)، فلماذا تكرار العمليات الحسابية في JavaScript؟ ** وظائف SQL (الوظائف المحددة من قبل المستخدم - UDF) ** دعونا ننشئ "وحدات ماكرو" داخل قاعدة البيانات نفسها.

فيما يلي كيفية إنشاء ماكرو SQL رياضي:

SQL
CREATE OR REPLACE FUNCTION calculate_tax(price NUMERIC)
RETURNS NUMERIC AS $$
  SELECT price * 1.22;
$$ LANGUAGE sql;

بمجرد تشغيل هذا الأمر، تبقى الوظيفة إلى الأبد في قاعدة البيانات الخاصة بنا. يمكن استدعاؤه من أي استعلام:

SQL
SELECT name, calculate_tax(unit_price) AS price_with_tax FROM products;

الخلق الديناميكي

يمكننا تعريف أي عدد نريده من المتغيرات، مع تحديد أنواعها، وسيعمل LANGUAGE sql على تشغيل الاستعلام ويعيد ضمنيًا العبارة الأخيرة الموضوعة بين علامتي الدولار $$.

جربه بنفسك

تمرين#sql.m12.l1.e1
المحاولات: 0جارٍ التحميل…

أنشئ دالة بسيطة قابلة للاستدعاء باسم 'get_full_name' والتي تقبل معلمتي TEXT ('first_name' TEXT و'last_name' TEXT).\nيجب أن تُرجع قيمة TEXT.\nفي الداخل، قم بإجراء SELECT بسيط لربط الوسيطتين بمسافة واحدة بينهما، وقم بتعريفهما كلغة SQL.

جارٍ تحميل المحرر…
إظهار التلميح

إنشاء أو استبدال الدالة get_full_name(first_name TEXT, last_name TEXT) إرجاع النص كـ $$ SELECT first_name || ' ' || اسم العائلة؛ $$ لغة SQL؛

الحل متاح بعد 3 من المحاولات

تمرين#sql.m12.l1.e2
المحاولات: 0جارٍ التحميل…

في UDFs الأكثر تقدمًا، يمكننا تضمين استعلامات كاملة. أنشئ دالة 'get_customer_count()' لا تقبل أي معلمات وتقوم بإرجاع عدد صحيح.\nفي الداخل، قم بتشغيل 'SELECT COUNT(id) FROM Customers' تافه.\nقم بتعريفها كلغة SQL خالصة.

جارٍ تحميل المحرر…
إظهار التلميح

انتبه: يقوم COUNT بإرجاع قيمة كبيرة، ثم يرسلها إلى INTEGER لمطابقة نوع الإرجاع! إنشاء أو استبدال الدالة get_customer_count() إرجاع عدد صحيح كـ $$ SELECT CAST(COUNT(id) AS INTEGER) من العملاء؛ $$ لغة SQL؛

الحل متاح بعد 3 من المحاولات