كيف يمكنني تجاهل علامات الضم في برنامج نصي SQL يعمل من SQL Plus؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

لدي برنامج نصي SQL يقوم بإنشاء حزمة تحتوي على تعليق يحتوي على علامة العطف (&).عندما أقوم بتشغيل البرنامج النصي من SQL Plus، تتم مطالبتي بإدخال قيمة بديلة للسلسلة التي تبدأ بـ &.كيف يمكنني تعطيل هذه الميزة بحيث يتجاهل SQL Plus علامة الضم؟

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

المحلول

قد يكون هذا مناسبًا لك:

set define off

وإلا فإن علامة الضم يجب أن تكون في نهاية السلسلة،

'StackOverflow &' || ' you'

يحرر:لقد كنت سعيدًا بالنقر عند الحفظ ...تمت الإشارة إلى هذا من أ مدونة.

نصائح أخرى

إذا كنت تستخدم متغيرات الاستبدال في بعض الأحيان، فقد لا ترغب في إيقاف تشغيل التعريف.في هذه الحالات، يمكنك تحويل علامة الضم من معادلها الرقمي كما في || Chr(38) || أو إلحاقه كحرف واحد كما في || '&' ||.

لقد حللت بالكود أدناه:

set escape on

ووضع \ بجانب & في اليسار 'value_\&_intert'

أت

يمكنك تعيين الحرف الخاص، الذي يتم البحث عنه عند تنفيذ البرنامج النصي، إلى قيمة أخرى عن طريق استخدام SET DEFINE <1_CHARACTER>

بشكل افتراضي، تكون وظيفة DEFINE نفسها قيد التشغيل، ويتم ضبطها على &

يمكن إيقاف تشغيله - كما ذكرنا سابقًا - ولكن يمكن تجنبه أيضًا عن طريق ضبطه على قيمة مختلفة.كن على دراية تامة بالعلامة التي قمت بتعيينها عليها.في المثال أدناه، قمت باختيار الحرف #، ولكن هذا الاختيار هو مجرد مثال.

SQL> select '&var_ampersand #var_hash' from dual;
Enter value for var_ampersand: a value

'AVALUE#VAR_HASH'
-----------------
a value #var_hash

SQL> set define #
SQL> r
  1* select '&var_ampersand #var_hash' from dual
Enter value for var_hash: another value

'&VAR_AMPERSANDANOTHERVALUE'
----------------------------
&var_ampersand another value

SQL>

تعيين تعريف إيقاف <- هذا هو أفضل حل وجدته

وحاولت أيضاً...

تحديد تحديد }

تمكنت من إدراج العديد من السجلات التي تحتوي على أحرف ampersand '&' لكن لا يمكنني استخدام الحرف "} 'في النص ، لذلك قررت استخدام" Set Define Off "وكل شيء يعمل كما ينبغي.

وفق هذه الأسئلة الشائعة الجميلة هناك بضعة حلول.

قد تتمكن أيضًا من الهروب من علامة الضم باستخدام حرف الخط المائل العكسي \ إذا كنت تستطيع تعديل التعليق.

كان لدي بيان حالة مع عمود WHEN = "نص ما ونص إضافي" ثم ....

لقد استبدلته عندما يكون العمود = 'Sometext' || CHR (38) || "المزيد من النص" ثم ...

يمكنك أيضًا استخدامه عندما يكون عمودًا مثل "Somethex _ المزيد من النص" ثم ...

(_ هو حرف البدل لحرف واحد)

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