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


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.