ওরাকল পিএল / এসকিউএল এর স্ট্যান্ডার্ড এসএসআরটি রুটিন আছে কি?


14

আমি অন্য ভাষাতে যেমন পাওয়া যায় তার মতো কার্যকরীভাবে একটি এসএসআরটি রুটিন ব্যবহার করতে চাই, যেমন একটি নির্মাণ (এটি পদ্ধতি হোক, সিনট্যাক্স হোক ...)

ASSERT( <condition>, <msg>)

যেমন <condition>প্রথম আর্গুমেন্টে পাস করার সময় মিথ্যা হলে নির্দিষ্ট <msg>বর্ণনামূলক বার্তা সহ একটি ব্যতিক্রম উত্থাপিত হয় ।

আমি জানি এটি হাতছাড়া করা তুচ্ছ, কিন্তু আমি জিজ্ঞাসা করছি যে ডিবিএমএসের সাথে কোনও মানক সরবরাহ করা আছে কিনা।

আমার নিজের লেখা বা তৃতীয় পক্ষের প্যাকেজগুলি থেকে একটি আমদানি করা অবৈধ হবে, যেহেতু আমি যে প্রকল্পে কাজ করছি তার পুরোপুরি পোর্টেবল এবং স্বচ্ছ হওয়া দরকার।


না, আপনাকে নিজের তৈরি করতে হবে। আজকাল বাস্তবতা কম রয়েছে: :)
ভিনসেন্ট মালগ্র্যাট

উত্তর:


11

এসকিউএল বা পিএল / এসকিউএল-তে অন্তর্নিহিত দৃ as়তা পদ্ধতি নেই, সুতরাং আপনাকে নিজের লিখন লিখতে হবে।

এটি সম্পর্কে দুটি উপায় আছে। এই ওরাকল নিবন্ধে আলোচিত হিসাবে আপনি নিজেই ব্যতিক্রম বাড়াতে পারেন , বা raise_application_errorপ্রক্রিয়াটির জন্য একটি মোড়ক লিখতে পারেন , যা ডকুমেন্টেশনের ওরাকল ব্যতিক্রম হ্যান্ডলিং বিভাগে নথিভুক্ত রয়েছে।

আমি যুক্ত করব যে ব্যতিক্রমগুলি এই জাতীয় দৃশ্যের জন্য তৈরি করা হয়েছিল, সুতরাং আপনি আপনার প্রোগ্রামার টুপিটি এক সেকেন্ডের জন্য বন্ধ করে রাখা এবং আপনার ডিবিএ টুপি ব্যবহার করা ভাল better


7

DBMS_ASSERT প্যাকেজটিতে অন্তর্নির্মিত হ'ল আপনি যা খুঁজছেন তার সংক্ষিপ্তভাবে স্কোপযুক্ত সংস্করণ। অন্যান্য দৃser়তার জন্য ফিল সঠিক, আপনার নিজের তৈরি করতে হবে। ফিলের উত্তর +1 এ এখানে দ্বিতীয় বিকল্পের একটি সহজ বিক্ষোভ এখানে দেওয়া হয়েছে :

set serveroutput on size 1000000
Declare

   Procedure Assert (pCondition In Number, pMessage In Varchar2) Is
   Begin
      If (pCondition = 1) Then
         Return; 
      End If;
      Raise_Application_Error(-20001, pMessage);
   End Assert;

Begin
   DBMS_Output.Put_Line('Start');

   Assert(Case When 1+1=2 Then 1 Else 0 End,'Something is wrong 1.');
   Assert(Case When 1+1=9 Then 1 Else 0 End,'Something is wrong 2.');

   DBMS_Output.Put_Line('End');
End;
/

1
DBMS_ASSERT এসকিউএল বিশ্লেষণে লক্ষ্যযুক্ত, তাই আমি এটি উল্লেখ করছি না।
ফিলি

1
@ ফিল এবং সে কারণেই আমি সংকীর্ণভাবে বললাম। সম্ভবত এটি অত্যন্ত সংক্ষিপ্তভাবে বাদ দেওয়া উচিত। :)
লেইফ রিফেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.