تحديد واستخدام متغير ضمن عبارة تحديد
في SQL ، لا ينصح عمومًا بتعيين قيمة لمتغير مستخدم واستخدامه في نفس البيان المحدد. تنص وثائق MySQL صراحة على أن ترتيب التقييم لمثل هذه التعبيرات غير محدد وقد يختلف بناءً على عناصر العبارات وإصدارات الخادم.
لتوضيح هذه النقطة ، فكر في الاستعلام التالي:
Z: = sum (عنصر) ، 2*@z من Tablea ؛SELECT @z:=SUM(item), 2*@z FROM TableA;في هذا الاستعلام ، تتوقع أن يعيد العمود الثاني قيمة @Z مضروبة على اثنين. ومع ذلك ، قد يعيد MySQL فارغًا ، حيث أن أمر التقييم غير مضمون. يختلف هذا السلوك عن استخدام إجراء مخزن بدلاً من متغير المستخدم ، كما هو موضح أدناه:
حدد Z: = SomeProcedure (عنصر) ، 2*@z من tablea ؛
SELECT @z:=SUM(item), 2*@z FROM TableA;في هذه الحالة ، يتم الحصول على النتائج المتوقعة لأنه يتم تقييم استدعاء الإجراء المخزن قبل التخصيص المتغير. من (SELECT Z: = SUM (عنصر) من Tablea ) t ؛
يضمن هذا النهج أن يتم تعيين المتغير قبل استخدامه في الاستعلام الخارجي.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3