পিএল / এসকিউএল, একটি স্ট্রিং মধ্যে একক উদ্ধৃতি এড়াতে কিভাবে?


114

ওরাকল পিএল / এসকিউএল-তে কীভাবে স্ট্রিংয়ে একক উদ্ধৃতি থেকে বাঁচবেন? আমি এইভাবে চেষ্টা করেছি, এটি কাজ করে না।

declare
  stmt varchar2(2000);
begin
  for i in 1021 .. 6020
  loop
    stmt := 'insert into MY_TBL (Col) values(\'ER0002\')';

    dbms_output.put_line(stmt);
    execute immediate stmt;
    commit;
  end loop;
exception
  when others then
    rollback;
    dbms_output.put_line(sqlerrm);
end;
/

উত্তর:


184

আপনি আক্ষরিক উদ্ধৃতি ব্যবহার করতে পারেন:

stmt := q'[insert into MY_TBL (Col) values('ER0002')]';

আক্ষরিক জন্য ডকুমেন্টেশন এখানে পাওয়া যাবে

বিকল্পভাবে, আপনি একটি একক উদ্ধৃতি বোঝাতে দুটি উদ্ধৃতি ব্যবহার করতে পারেন:

stmt := 'insert into MY_TBL (Col) values(''ER0002'')';

কিউ সিনট্যাক্স সহ আক্ষরিক উদ্ধৃতি ব্যবস্থাটি আরও নমনীয় এবং পঠনযোগ্য, আইএমও।


19

এখানে একটি ব্লগ পোস্ট রয়েছে যা স্ট্রিংগুলিতে টিকেটগুলি রক্ষা করতে সহায়তা করবে।

এখানে বলা পোস্টের সহজ পদ্ধতিটি এখানে:

সবচেয়ে সহজ এবং সর্বাধিক ব্যবহৃত উপায় হ'ল উভয় পক্ষের দুটি একক> উদ্ধৃতি চিহ্ন সহ একটি একক উদ্ধৃতি চিহ্ন ব্যবহার করা।

দ্বৈত থেকে 'পরীক্ষার একক উদ্ধৃতি' 'নির্বাচন করুন;

উপরোক্ত বিবৃতিটির ফলাফল হবে:

একক উদ্ধৃতি পরীক্ষা

কেবলমাত্র উল্লেখ করে আপনার একক উদ্ধৃতি> অক্ষর মুদ্রণের জন্য অতিরিক্ত একক উদ্ধৃতি অক্ষর প্রয়োজন। এটি যদি আপনি দুটি একক উদ্ধৃতি অক্ষর রাখেন তবে ওরাকল একটি মুদ্রণ করবে। প্রথম> একজন পালানোর চরিত্রের মতো কাজ করে।

এটি ওরাকলে একক উদ্ধৃতি চিহ্ন প্রিন্ট করার সহজতম উপায়। তবে এটি জটিল হয়ে উঠবে যখন আপনাকে কেবল একটিটির পরিবর্তে উদ্ধৃতি চিহ্নের একটি সেট মুদ্রণ করতে হবে। এই> পরিস্থিতিতে নিম্নলিখিত পদ্ধতিটি সূক্ষ্মভাবে কাজ করে। তবে এর জন্য আরও কিছু টাইপিং শ্রম প্রয়োজন।


13

উপরোক্ত ডিসুকির উত্তর ছাড়াও, আপনি একক উদ্ধৃতির জন্য chr (39) ব্যবহার করতে পারেন।

আমি প্রচুর পরিমাণে বিদ্যমান ডেটার উপর ভিত্তি করে সন্নিবেশ / আপডেট বিবরণী তৈরি করতে হবে যখন আমি এটি বিশেষভাবে দরকারী বলে মনে করি।

এখানে একটি খুব দ্রুত উদাহরণ:

বলি আমাদের খুব সাধারণ টেবিল আছে, গ্রাহকরা, এতে দুটি কলাম রয়েছে, ফার্স্টনাম এবং লাস্টনাম। আমাদের গ্রাহকগণ 2 এ ডেটা স্থানান্তরিত করা দরকার, তাই আমাদের গুচ্ছ INSERT স্টেটমেন্ট তৈরি করতে হবে।

Select 'INSERT INTO Customers2 (FirstName, LastName) ' ||
       'VALUES (' || chr(39) || FirstName || chr(39) ',' || 
       chr(39) || LastName || chr(39) || ');' From Customers;

আমি এক পরিবেশ থেকে অন্য পরিবেশে ডেটা স্থানান্তরিত করার সময়, বা দ্রুত পরিবেশ পুনর্নির্মাণের সময় এটি খুব দরকারী বলে মনে করেছি।


0

EXECUTE IMMEDIATE 'insert into MY_TBL (Col) values(''ER0002'')'; আমার জন্য কাজ। বন্ধ varchar/ stringএকক উদ্ধৃতি দুই জোড়া সঙ্গে কৌতুক করেনি। usingকীওয়ার্ড ব্যবহার করা অন্য বিকল্প হতে পারে EXECUTE IMMEDIATE 'insert into MY_TBL (Col) values(:text_string)' using 'ER0002'; মনে রাখবেন usingকীওয়ার্ডটি কার্যকর হবে না, আপনি যদি EXECUTE IMMEDIATEপ্যারামিটারের সাথে ডিডিএল চালাতে ব্যবহার করেন তবে, উদ্ধৃতি ব্যবহার করে ডিডিএল এর কাজ করবে।

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