5) لماذا لا نسمي أعمدة RETURNS TABLE بأسماء أعمدة الجدول؟
2السؤال الثاني: صح أم خطأ
1) الدالة الجدولية يمكن ربطها بـ JOIN.
الصواب: صح
2) RETURN NEXT ينهي تنفيذ الدالة.
الصواب: خطأ
3) RETURN QUERY يمكن استخدامه أكثر من مرة في الدالة نفسها.
الصواب: صح
4) RETURNS SETOF products تُرجع صفًّا واحدًا فقط.
الصواب: خطأ
5) في Oracle تُستخدم PIPE ROW في الدوال الجدولية المتدفقة.
الصواب: صح
3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة
1) لإضافة نتيجة استعلام كاملة إلى مخرجات الدالة نكتب RETURNSELECT …;
الإجابة: QUERY
2) لإرجاع صفوف بأعمدة جدول موجود نكتب RETURNSproducts
الإجابة: SETOF
3) تُستدعى الدالة الجدولية في جزء من الاستعلام.
الإجابة: FROM
4السؤال الرابع: أسئلة عملية
1) كم صفًّا يُرجع هذا الكود؟
query.sql
CREATEFUNCTION customers_in(c text)RETURNSTABLE (cid int, cname text, since date)LANGUAGEplpgsqlAS $$BEGINRETURNQUERYSELECT id, name, joined FROM customers WHERE city = c ORDERBY joined;END;$$;SELECTcount(*) FROM customers_in('الرياض');
الناتج الصحيح:
النتيجة · صف واحد
count
3
2) ما ناتج هذا الكود؟
query.sql
CREATEFUNCTION evens(n int) RETURNSSETOFintLANGUAGEplpgsqlAS $$BEGINFOR i IN1..n LOOPIF i % 2 = 0THENRETURNNEXT i; ENDIF;ENDLOOP;END $$;SELECTsum(e) FROM evens(10) e;