আপনি যদি কোনও পরিস্থিতির জন্য কোনও "প্রাথমিক প্রস্থান" চান যেখানে কোনও ত্রুটি নেই, তবে @ পাইওটর্ম পোস্ট করা স্বীকৃত উত্তরটি ব্যবহার করুন। তবে সাধারণত কোনও ত্রুটির শর্তের কারণে আপনি জামিন পাবেন (বিশেষত একটি এসকিউএল পদ্ধতিতে)।
মাইএসকিউএল ভি 5.5 হিসাবে আপনি একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারেন। ব্যতিক্রম হ্যান্ডলার ইত্যাদি নেতিবাচক যা একই ফলাফল অর্জন করবে, তবে একটি ক্লিনার, আরও মারাত্মক পদ্ধতিতে।
এখানে কীভাবে:
DECLARE CUSTOM_EXCEPTION CONDITION FOR SQLSTATE '45000';
IF <Some Error Condition> THEN
SIGNAL CUSTOM_EXCEPTION
SET MESSAGE_TEXT = 'Your Custom Error Message';
END IF;
নোটটি SQLSTATE '45000'
"আনহানডেল ব্যবহারকারী-সংজ্ঞায়িত ব্যতিক্রম শর্ত" এর সমান। ডিফল্টরূপে, 1644
এটির একটি ত্রুটি কোড তৈরি হবে (যার একই অর্থ রয়েছে)। নোট করুন যে আপনি চাইলে অন্যান্য শর্তের কোড বা ত্রুটি কোডগুলি ফেলে দিতে পারেন (ব্যতিক্রম হ্যান্ডলিংয়ের জন্য অতিরিক্ত বিশদ) details
এই বিষয়ে আরও তথ্যের জন্য, দেখুন:
https://dev.mysql.com/doc/refman/5.5/en/signal.html
মাইএসকিউএল ফাংশনের মধ্যে কীভাবে ত্রুটি বাড়ানো যায়
http://www.databasejournal.com/features/mysql/mysql-error-handling-using-the-signal-and-resignal-statements.html
অভিযোজ্য বস্তু
আমি যখন আমার এই পোস্টটি পুনরায় পড়ছি তখন বুঝতে পারি আমার যুক্ত করার অতিরিক্ত কিছু আছে। মাইএসকিউএল ভি 5.5 এর আগে একটি ব্যতিক্রম ছুঁড়ে অনুকরণ করার একটি উপায় ছিল। এটি হুবহু একই জিনিস নয়, তবে এটি ছিল অ্যানালগ: কোনও প্রক্রিয়া কল করার মাধ্যমে একটি ত্রুটি তৈরি করুন যা বিদ্যমান নেই। প্রক্রিয়াটি একটি নাম দিয়ে কল করুন যা একটি কার্যকর উপায় পাওয়ার জন্য অর্থবোধক যার মাধ্যমে সমস্যাটি কী তা নির্ধারণ করা যায়। ত্রুটি দেখা দিলে, আপনি ব্যর্থতার লাইনটি দেখতে পাবেন (আপনার নির্বাহের প্রসঙ্গে)।
উদাহরণ স্বরূপ:
CALL AttemptedToInsertSomethingInvalid;
মনে রাখবেন যে আপনি যখন কোনও পদ্ধতি তৈরি করেন, তখন এই জাতীয় জিনিসগুলির কোনও বৈধতা দেওয়া হয় না। সংকলিত ভাষার মতো কিছু করার সময়, আপনি কখনই কোনও ফাংশনটি কল করতে পারেননি যা ছিল না, এটির মতো স্ক্রিপ্টে এটি রানটাইমে কেবল ব্যর্থ হবে, যা ঠিক এই ক্ষেত্রে পছন্দসই!
IF tablename IS NOT NULL THEN
...;)