tutorial - تحميل برنامج oracle sql developer




حدد بدون عبارة FROM في Oracle (4)

في SQL Server من الممكن تنفيذ SELECT ، بدون مرجع إلى جدول؛ شيء مثل:

Select 1.2 +3, 'my dummy string'

بما أن Oracle لا تسمح باستخدام SELECT بدون FROM ، فإنني أستخدم الجدول المزدوج لهذا النوع من العمليات ؛ شيء مثل:

Select 1,2+3, 'my dummy string' FROM DUAL

هناك طريقة أفضل للقيام بهذا النوع من الاستعلام؟ من الممارسات الجيدة استخدام الطاولة المزدوجة؟


من الجيد استخدام الجدول المزدوج

نعم ، يستخدم الجدول المزدوج عادة لهذا الغرض بالضبط. إنها قياسية في Oracle عندما لا يتوفر لديك جدول للاختيار من بينها.


أعتقد أنك يجب أن تستخدم ثنائي. يتم استخدامه عندما تحتاج إلى تشغيل SQL ليس لديها اسم جدول. لا أستطيع أن أقول إنني استخدمه كثيرًا بخلاف النصوص البرمجية في SQL لترديد التاريخ الذي يتم تشغيله أو شيء غبي من هذا القبيل.


لا ، في Oracle لا يوجد SELECT بدون FROM .

استخدام الجدول dual هو ممارسة جيدة.

dual هو جدول في الذاكرة. إذا لم تقم بتحديد DUMMY منه ، فإنه يستخدم مسار وصول خاص ( FAST DUAL ) لا يتطلب أي إدخال I/O .

في يوم من الأيام ، كان لدى dual سجلان (ومن هنا الاسم) وكان الهدف منه أن يعمل كمجموعة سجلات وهمية لتكرار السجلات التي تم ضمها.

الآن أصبح لها سجل واحد ، ولكن لا يزال بإمكانك إنشاء عدد عشوائي من الصفوف باستخدامه:

SELECT  level
FROM    dual
CONNECT BY
        level <= 100

MySQL يدعم أيضا dual (فضلا عن بناء الجملة).


لا تنس أن معظم الأوقات التي لا تحتاج بالفعل لاستخدام SELECT.

بدلا من:

SELECT sysdate INTO l_date FROM dual;
SELECT CASE WHEN i = j THEN 0 ELSE 1 END INTO l_foo FROM dual;
...

يمكنك استخدام

l_date := sysdate;
l_foo  := CASE WHEN i = j THEN 0 ELSE 1 END;
...




oracle