SAP برنامج تعليمي لكتابة نصوص SQL في HANA: بناء الجملة والأمثلة
⚡ ملخص ذكي
نص SQL البرمجي في SAP تُوسّع HANA لغة SQL القياسية بإضافة بنيات وظيفية وإجرائية. وهي تدعم الإجراءات المخزنة والوظائف المُعرّفة من قِبل المستخدم، مما ينقل منطق البيانات المكثف من خادم التطبيق إلى قاعدة البيانات.

ما هو برنامج SQL النصي؟
SQL Script عبارة عن مجموعة من الملحقات لـ SQL. يمكن استخدامه في الإجراء المخزن بدلاً من SQL العادي. ويحدد التمديدات الوظيفية والإجرائية.
In SQL يمكن لمستخدم البرنامج النصي تعريف المتغيرات المحلية للهيكل والجداول التي تستخدم في المقام الأول لإنشاء الإجراءات المخزنة.
يمكن أيضًا استخدام برنامج SQL النصي في طريقة عرض الحساب. في SQL Script، هناك حاويتان منطقيتان مختلفتان-
- الإجراء (تسمح لك الإجراءات بوصف سلسلة من تحويلات البيانات على البيانات التي تم تمريرها كجداول إدخال وقاعدة بيانات).
- وظيفة محددة من قبل المستخدم (يتم فصل حاوية الوظيفة المحددة من قبل المستخدم إلى وظيفة محددة من قبل المستخدم ووظيفة محددة من قبل مستخدم الجدول).
عناصر لغة البرمجة SQL هي كما يلي -
منطق البرنامج النصي SQL التعريفي (ملحق وظيفي)
- يسمح بتعريف أنواع الجداول دون الرجوع إلى جداول قاعدة البيانات.
- بيان نموذجي مثل التحديدات.
- وظائف محرك الحساب (CE).
⚠️ ملاحظة حول الإصدار: تم إيقاف استخدام عوامل تشغيل خطة محرك الحساب، ووظائف CE_ مثل CE_COLUMN_TABLE و CE_JOIN، بواسطة SAPينبغي أن تستخدم عمليات التطوير الجديدة عبارات SQL القياسية، والتي يتعامل معها المُحسِّن بكفاءة مماثلة على الأقل. سيظل كود CE الحالي يعمل، ولكن ينبغي ترحيله عند إجراء أي تغيير على الإجراء.
منطق البرنامج النصي لتنسيق SQL (ملحق وظيفي)
يتم استخدام منطق التزامن لتنفيذ تدفق البيانات باستخدام عبارات استعلام DDL وDML وSQL والتحكم في منطق التدفق باستخدام بنيات اللغة الضرورية مثل الحلقات والشروط.
- بيان لغة تعريف البيانات. على سبيل المثال، إنشاء مخطط.
- لغة معالجة البيانات (على سبيل المثال إدراج).
منطق البرنامج النصي SQL الحتمي (الامتداد الإجرائي)
يقوم المنطق الحتمي بتقسيم المنطق بين العديد من تدفقات البيانات. على سبيل المثال، IF، ELSEIF، ELSE، CASE، FOR (حلقة) والاستثناءات.
أهمية البرنامج النصي SQL
يوفر SQL Script فقط العناصر الضرورية لترحيل المنطق كثيف البيانات أو تشغيل خادم التطبيق إلى خادم قاعدة البيانات.
النقاط الرئيسية في برنامج SQL النصي
- يتم تنفيذ SQL Script ومعالجته في محرك الحساب ضمن قاعدة بيانات HANA.
- SQL Script قادر على إجراء حسابات معقدة.
- في SQL Script، يمكن الإعلان عن متغير محلي للاحتفاظ بالنتيجة المؤقتة.
- يمكن لإجراءات SQL Script إرجاع المزيد من النتائج باستخدام "معلمة OUTPUT" بينما يمكن لإجراءات SQL العادية إرجاع نتيجة واحدة فقط.
- في SQL Script، يمكنك تحديد أنواع الجداول العامة أو المحلية التي يمكن استخدامها كمعلمات.
باستخدام SQL Script، يمكن تحقيق وضع المعالجة المتوازية.
مثال على إجراء نصي SQL
الإجراء هو الحاوية الأكثر شيوعًا. المثال أدناه يقرأ بيانات الموظفين، ويقوم بتصفيتها، ثم يعيد النتيجة من خلال مُعامل جدول الإخراج.
CREATE PROCEDURE DHK_SCHEMA.GET_HIGH_EARNERS ( IN im_min_salary DECIMAL(15,2), OUT ex_employees TABLE (EMP_NAME NVARCHAR(100), SALARY DECIMAL(15,2)), OUT ex_row_count INTEGER ) LANGUAGE SQLSCRIPT READS SQL DATA AS BEGIN -- Declarative logic: a table variable, not a physical table lt_all = SELECT EMP_NAME, SALARY FROM DHK_SCHEMA.EMPLOYEE WHERE SALARY >= :im_min_salary; -- Imperative logic: branch on the result SELECT COUNT(*) INTO ex_row_count FROM :lt_all; IF :ex_row_count = 0 THEN ex_employees = SELECT '' AS EMP_NAME, 0 AS SALARY FROM DUMMY WHERE 1 = 0; ELSE ex_employees = SELECT * FROM :lt_all ORDER BY SALARY DESC; END IF; END;
هناك ثلاث قواعد جديرة بالذكر. تبدأ أي قراءة لمتغير بعلامة النقطتين الرأسيتين، لذا :lt_all يقرأ متغير الجدول بينما lt_all يُسند الأمر الموجود على اليسار هذه المهمة. يُخبر الأمر READS SQL DATA المُحسِّن بأن الإجراء ليس له آثار جانبية، مما يسمح بتوازي أكثر فعالية. والإجراء الذي يُعيد عدة مُعاملات إخراج هو تحديدًا ما تفتقر إليه لغة SQL العادية.
الأمر بسيط:
CALL DHK_SCHEMA.GET_HIGH_EARNERS (50000, ?, ?);
الدوال المعرفة من قبل المستخدم للقيم العددية والجداول
عندما يُنفّذ الإجراء عمليات، تُعيد الدالة قيمةً ويمكن استخدامها داخل الاستعلام. يوفر SQL Script شكلين، وهما غير قابلين للتبادل.
| معامل | دالة معرفة من قبل المستخدم (UDF) عددية | جدول UDF |
|---|---|---|
| سياسات الإرجاع والاستبدال | قيمة واحدة | مجموعة النتائج |
| مستعمل في | قائمة SELECT، عبارة WHERE، التعبيرات | عبارة FROM، مثل الجدول |
| يمكن تعديل البيانات | لا | لا |
| الاستخدام النموذجي | حسابات قابلة لإعادة الاستخدام مثل معدل الضريبة | عرض مُعَلم يُعيد صفوفًا مُفلترة |
-- Scalar function: returns one value CREATE FUNCTION DHK_SCHEMA.ADD_BONUS (im_salary DECIMAL(15,2)) RETURNS total DECIMAL(15,2) LANGUAGE SQLSCRIPT AS BEGIN total := :im_salary * 1.10; END; SELECT EMP_NAME, DHK_SCHEMA.ADD_BONUS(SALARY) AS WITH_BONUS FROM DHK_SCHEMA.EMPLOYEE;
يتم تعريف دالة الجدول باستخدام RETURNS TABLE، ثم يتم الاستعلام عنها في عبارة FROM، مما يجعلها الطريقة الطبيعية لبناء مجموعة بيانات قابلة لإعادة الاستخدام ومعلمة. حساب أو يمكن استهلاك التقرير.
أفضل ممارسات كتابة سكربتات SQL
يؤدي نص SQL أداءً جيدًا عند كتابته بطريقة تسمح للمحرك بالمعالجة المتوازية، ويؤدي أداءً سيئًا عند كتابته ككود تطبيق. ست عادات تُحدث الفرق.
- يفضل استخدام الأسلوب التقريري على الأسلوب الأمري. تتفوق عبارة واحدة تعتمد على مجموعة على حلقة تكرارية تعالج الصفوف واحدًا تلو الآخر، وغالبًا بفارق كبير. لا تلجأ إلى حلقة FOR إلا عندما يتعذر التعبير عن المنطق باستخدام عملية مجموعة.
- تجنب استخدام المؤشرات. إنها تفرض معالجة البيانات صفًا صفًا، مما يُعطّل محرك الحساب تمامًا. ويمكن إعادة كتابة كل مؤشر تقريبًا كعملية ربط أو تجميع.
- حافظ على استقلالية التصريحات. يتم حساب متغيرين جدوليين لا يشيران إلى بعضهما البعض بالتوازي. يؤدي تسلسل كل خطوة عبر الخطوة السابقة إلى جعل الإجراء بأكمله متسلسلاً.
- قم بتعريف متغير READS SQL DATA حيث يكون صحيحًا. وهذا يشير إلى أن الإجراء ليس له آثار جانبية، مما يسمح بمزيد من التحسين.
- قم بالتصفية في أقرب وقت ممكن. يؤدي تقليل عدد الصفوف في متغير الجدول الأول إلى تقليص كل شيء في المراحل اللاحقة، في حين أن عملية التصفية في النهاية قد دفعت التكلفة بالفعل.
- الانتقال بعيدًا عن وظائف CE_. لقد تم إيقاف استخدامها، ولا يمكن مزجها بحرية مع SQL في عبارة واحدة، كما أن مُحسِّن SQL يتعامل الآن مع نفس العمل بشكل أفضل.
يتم تغطية بناء الجملة على مستوى العبارة في SAP هانا SQL، الوظائف المتاحة داخل إجراء في SAP وظائف HANA SQLونماذج الكائنات التي تستخدم هذه الإجراءات في SAP نمذجة HANA البرنامج التعليمي.
