DB2 - كيفية تشغيل استعلام تحديد مخصص مع معلمة في نظام IBM I الوصول إلى أداة Windows GUI

StackOverflow https://stackoverflow.com/questions/2336820

سؤال

أرغب في تشغيل بعض عبارات تحديد مخصصة في أداة IBM System I Navigator لـ DB2 باستخدام متغير أعلن.

على سبيل المثال ، في عالم SQL Server World ، سأقوم بذلك بسهولة في نافذة استعلام SQL Server Management Studio مثل:

DECLARE @VariableName varchar(50);
SET @VariableName = 'blah blah';

select * from TableName where Column = @VariableName;

كيف يمكنني القيام بشيء مماثل في أداة IBM System I Navigator؟

هل كانت مفيدة؟

المحلول

ركضت عبر هذا المنشور أثناء البحث عن نفس السؤال. قدم زميلي في العمل الجواب. من الممكن بالفعل إعلان المتغيرات في بيان SQL المخصص في Navigator. هذا هو كيف يتم ذلك:

CREATE OR REPLACE VARIABLE variableName VARCHAR(50);
SET variableName = 'blah';
SELECT * FROM table WHERE column = variableName;
DROP VARIABLE variableName;

إذا لم تقم بإسقاط الاسم المتغير ، فسوف يتسكع حتى يعرف متى ...

نصائح أخرى

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

كبديل ، في شاشة/نص SQL يمكنك استخدامه CL:. أي شيء بعد هذا البادئة يتم تنفيذ أمر CL. يمكنك معالجة الجداول الخاصة بك (مثل RNMF) بهذه الطريقة.

كبديل ثانٍ ، تدعم ISERIES البرامج النصية REXX (مثبتة افتراضيًا مع نظام التشغيل). REXX هي لغة نصية ديناميكية جيدة وتدعم SQL المدمجة. لقد فعلت ذلك في كثير من الأحيان ويعمل بشكل رائع. لقد قمت حتى بإنشاء البرامج النصية لبيئة الإنتاج لدينا.

ما عليك سوى إنشاء برنامج نصي "افتراضي" واحد مع مثال إعداد وبيان المؤشر ونسخه في الإرادة. مع هذا البرنامج النصي يمكنك اللعب. انظر دليل REXX للحصول على بناء الجملة الصحيح لـ EXEC-SQL. أيضًا ، لديك stdin و stdout ولكن يمكنك استخدام "OVRDBF" للإشارة إلى جدول قاعدة البيانات (ملف فعلي). فقط اسمحوا لي أن أعرف إذا كنت بحاجة إلى مثال على برنامج REXX.

لاحظ أن الدليل "SQL المدمج البرمجة" لديه أمثلة REXX.

فيما يلي بضعة بدائل أخرى.

أداة نقل البيانات - يمكنك تشغيل أداة نقل بيانات ISERIES من سطر الأوامر (RTOPCB). أولاً ، قم بتشغيل إصدار واجهة المستخدم الرسومية وإنشاء ملف تعريف. إذا قمت بتحرير هذا الملف باستخدام محرر نصوص ، فسترى أن هذا مجرد ملف INI من الطراز القديم ويمكنك بسهولة العثور على السطر مع الاستعلام فيه. من هناك ، يمكنك كتابة ملف دفعي أو معالجة الملف النصي مسبقًا للسماح لك بمعالجة الاستعلام قبل إرساله إلى أداة الاستعلام.

QSHELL - إذا كان يمكنك تسجيل الدخول إلى ISERIES بشكل تفاعلي ، فقد تجد بيئة QSHELL أكثر دراية من CL أو Rexx (على الرغم من أن Rexx هو نوع من المرح). QSHELL هي بيئة POSIX كاملة تعمل على ISERIES. استخدم الأمر strqsh لبدء Qshell. يمكنك الحصول على KSH أو CSH كقذيفة. داخل QSHELL ، هناك أمر يسمى "DB2" يقدم الاستعلامات. لذلك ، يجب أن تكون قادرًا على فعل شيء مثل هذا داخل QSHELL:

system> VariableName = 'blah blah'
system> db2 "select * from TableName where Column = \'$VariableName\'"

قد تضطر إلى العبث مع الاقتباسات للحصول على KSH لتمريرها بشكل صحيح.

أيضًا ، داخل QSHELL ، يجب أن يكون لديك تثبيت PERL كامل يتيح لك استخدام DBI للحصول على البيانات.

بعض الطرق الأخرى للتفاعل مع البيانات على ISERIES: الاستعلام من العميل مع Python عبر ODBC ؛ استعلام من العميل مع Jython عبر JDBC ؛ قم بتثبيت Jython مباشرة على Iseries ثم الاستعلام عبر JDBC.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top