এসকিউএল প্লাস থেকে চলমান এসকিউএল স্ক্রিপ্টে আমি কীভাবে এম্পারস্যান্ডগুলি উপেক্ষা করব?


104

আমার একটি এসকিউএল স্ক্রিপ্ট রয়েছে যা একটি প্যাকেজ তৈরি করে যাতে একটি এম্পারস্যান্ড (&) যুক্ত একটি মন্তব্য রয়েছে। আমি যখন এসকিউএল প্লাস থেকে স্ক্রিপ্টটি চালিত করি তখন আমাকে & এর সাথে শুরু করে স্ট্রিংয়ের বিকল্প মান প্রবেশ করতে অনুরোধ জানানো হবে। এসকিউএল প্লাস অ্যাম্পারস্যান্ড উপেক্ষা করে আমি কীভাবে এই বৈশিষ্ট্যটি অক্ষম করব?

উত্তর:


181

এটি আপনার পক্ষে কাজ করতে পারে:

set define off

অন্যথায় অ্যাম্পারস্যান্ডটি স্ট্রিংয়ের শেষে হওয়া দরকার,

'StackOverflow &' || ' you'

সম্পাদনা: সংরক্ষণের সময় আমি ক্লিক-খুশি ছিলাম ... এটি একটি ব্লগ থেকে রেফারেন্স করা হয়েছিল ।


2
আপনি এটিকে গ্লোগিন.এসএইচএল সাইট প্রোফাইল সেটআপ ফাইল বা লগইন.এসএইচএল ব্যবহারকারী প্রোফাইল সেটআপ ফাইলেও নির্দিষ্ট করতে পারেন
ডেভিড অলড্রিজ

আপনি বিকল্প পরিবর্তনশীলগুলিতে আগ্রহী না হলে এটিই সহজ সমাধান।
ড্রামবেগ

সর্বদা একটি জীবন রক্ষা সমাধান :) ধন্যবাদ।
অঞ্জনা সিলভা

25

আপনি যদি কখনও কখনও বিকল্প বিকল্পগুলি ব্যবহার করেন তবে আপনি সংজ্ঞায়িত করতে চান না। এই ক্ষেত্রে আপনি অ্যাম্পারস্যান্ডটিকে এর সংখ্যার সমতুল্য রূপে রূপান্তর করতে পারেন || Chr(38) ||বা এটিকে একক অক্ষর হিসাবে যুক্ত করতে পারেন || '&' ||


নির্দিষ্ট পরিস্থিতি এমন একটি প্যাকেজ যার উত্সটিতে একটি মন্তব্যে একটি অ্যাম্পারস্যান্ড অন্তর্ভুক্ত রয়েছে। আমি দেখতে পাচ্ছি না যে আমি এর জন্য কীভাবে সংমিশ্রণ বা বিকল্প ব্যবহার করব।
জোশএল

জোশএল, আপনি সঠিক বলেছেন আমি এটি সম্পূর্ণতার জন্য তালিকাভুক্ত করেছি। এটি আপনার প্রশ্নের সাথে সম্পর্কিত যদিও এটি সরাসরি আপনার নির্দিষ্ট প্রশ্নের উত্তর দেয় না।
লেফ রিফেল

এটি আসলে আমাকে সাহায্য করেছিল।
আর্কিমিডিস ট্রাজানো

13

আমি নীচের কোডটি দিয়ে সমাধান করেছি:

set escape on

এবং একটি \ পাশে এবং বামে রাখুন 'value_\&_intert'

ATT


এটি আমার পক্ষে কাজ করেছে। আমি কমান্ডটি ব্যবহার করছিলাম comment on column tablename.columnname is 'war ' || chr(38) || ' peace'তবে এটি আমাকে ত্রুটি দিচ্ছিল ORA-01780: string literal required
এমসওয়াডেজ

6

আপনি বিশেষ অক্ষরটি সেট করতে পারেন, যা কোনও স্ক্রিপ্টের প্রয়োগের জন্য সন্ধান করা হয়, এটি ব্যবহার করে অন্য কোনও মান হিসাবে সেট করতে SET DEFINE <1_CHARACTER>

ডিফল্টরূপে, DEFIN ফাংশনটি নিজেই চালু থাকে এবং এটি & এ সেট করা থাকে

এটি বন্ধ করা যেতে পারে - যেমন ইতিমধ্যে উল্লিখিত রয়েছে - তবে এটি আলাদা মান হিসাবে সেট করার মাধ্যমে এড়ানো যায়। আপনি কী সাইন এ সেট করেছেন তা সম্পর্কে খুব সচেতন হন। নীচের উদাহরণে, আমি # টি চরিত্রটি বেছে নিয়েছি, তবে সেই পছন্দটি একটি উদাহরণ।

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>

1
আমি সম্প্রতি এই পদ্ধতির ব্যবহার করেছি। আমি এটি পছন্দ করি কারণ আমার পিএল / এসকিউএল প্যাকেজগুলির বিষয়বস্তুগুলি পরিবর্তন করার প্রয়োজন নেই।
ড্রামবেগ

3

সেটটি নির্ধারণ করুন <- এটি আমি খুঁজে পেয়েছি সেরা সমাধান

আমি চেষ্টাও করেছি ...

নির্ধারণ করা}

আমি অ্যাম্পারস্যান্ড অক্ষরগুলি & & র সমন্বিত বেশ কয়েকটি রেকর্ড সন্নিবেশ করতে সক্ষম হয়েছি কিন্তু আমি "}" অক্ষরটিকে পাঠ্যে ব্যবহার করতে পারি না তাই আমি সিদ্ধান্ত নিয়েছি "সেট ডিফাইন অফ" ব্যবহার করব এবং সবকিছু যেমনটি ঠিক তেমন কাজ করে ততক্ষণ কাজ করে।


2

এই সুন্দর FAQ অনুসারে একটি দম্পতি সমাধান আছে।

আপনি \যদি মন্তব্যটি সংশোধন করতে পারেন তবে আপনি ব্যাকস্ল্যাশ চরিত্রের সাথে অ্যাম্পারস্যান্ড এড়াতে সক্ষম হতে পারেন।


2
ব্যাকস্ল্যাশ পালাতে এসকিউএল * প্লাস বা এসকিউএল ডেপলফায়ার কাজ করে না
জিম

2
@ জিমটুফ এটি দিয়ে সক্রিয় করার পরে এটি করেset escape on
ডেভিড বালাইচ

0

আমি WHEN কলাম = 'কিছু পাঠ্য ও আরও পাঠ্য' এর পরে একটি CASE বিবৃতি পেয়েছি ...

আমি এটিকে WHEN কলাম = 'কিছুটা' দিয়ে প্রতিস্থাপন করেছি || সিএইচআর (38) || 'আরও পাঠ্য' তারপর ...

আপনি WHEN কলামটি 'কিছু পাঠ্য _ আরও পাঠ্য' চাইলে ব্যবহার করতে পারেন ...

(_ একক চরিত্রের জন্য ওয়াইল্ডকার্ড)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.