কম্পিউটার

MySQL "একটি পরিবর্তনশীল বা নতুন ছদ্ম-ভেরিয়েবল নয়" বার্তা। আমার সংরক্ষিত পদ্ধতিতে এই ত্রুটি কি?


এই ত্রুটি বার্তা পরিত্রাণ পেতে, আসুন একটি নমুনা উদাহরণ দেখুন. তবে তার আগে আসুন এটি ঠিক করার ধারণাটি জেনে নেওয়া যাক।

সঞ্চিত পদ্ধতি থেকে মান পেতে ভেরিয়েবল ব্যবহার করুন। ভেরিয়েবলটি @ চিহ্নের সাথে উপসর্গ হবে। সিনট্যাক্স নিম্নরূপ -

 কল yourstoredProcedureName(yourParameter1,yourParameter2,...........N,@yourVariableName);

ভেরিয়েবলের মান দেখতে আপনাকে সিলেক্ট স্টেটমেন্ট ব্যবহার করতে হবে। সিনট্যাক্স নিম্নরূপ -

@yourVariableName নির্বাচন করুন;

উপরের সিনট্যাক্সটি বুঝতে, আসুন একটি টেবিল তৈরি করি এবং টেবিলে কিছু রেকর্ড সন্নিবেশ করি।

একটি টেবিল তৈরি করার প্রশ্নটি নিম্নরূপ -

mysql> টেবিল সংরক্ষিত প্রক্রিয়া ডেমো তৈরি করুন -> ( -> আইডি int, -> নাম varchar(10) -> );কোয়েরি ঠিক আছে, 0 সারি প্রভাবিত (1.20 সেকেন্ড)

এখন insert কমান্ড ব্যবহার করে টেবিলে কিছু রেকর্ড সন্নিবেশ করান। প্রশ্নটি নিম্নরূপ -

mysql> সংরক্ষিত প্রক্রিয়া ডেমো মান (1, 'জন'); কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.31 সেকেন্ড) mysql> সংরক্ষিত প্রক্রিয়া ডেমো মানগুলিতে সন্নিবেশ করুন (2, 'ক্যারল'); কোয়েরি ঠিক আছে, 1 সারি প্রভাবিত (0.19 সেকেন্ড) )

সিলেক্ট স্টেটমেন্ট ব্যবহার করে টেবিল থেকে সমস্ত রেকর্ড প্রদর্শন করুন। প্রশ্নটি নিম্নরূপ -

mysql> নির্বাচন করুন *StoredProcedureDemo থেকে;

নিচের আউটপুট −

+------+-------+| আইডি | নাম |+------+------+| 1 | জন || 2 | ক্যারল |+------+------+2 সারি সেটে (0.00 সেকেন্ড)

এখানে সংরক্ষিত পদ্ধতি যা একটি মান প্রদান করে। একটি সংরক্ষিত পদ্ধতি −

তৈরি করার জন্য ক্যোয়ারীটি নিম্নরূপ
mysql> DELIMITER //mysql> পদ্ধতি তৈরি করুন Update_table(IN Id int, IN Name VARCHAR(20), OUT বার্তা VARCHAR(50)) -> BEGIN -> বার্তা সেট করুন ='ডেটাবেস আপডেট করা হয়েছে'; -> সংরক্ষিত প্রক্রিয়া ডেমোতে ঢোকান -> মান (আইডি, নাম); -> শেষ; -> //কোয়েরি ঠিক আছে, 0টি সারি প্রভাবিত (0.67 সেকেন্ড)mysql> DELIMITER;

এখন কিছু মান সহ সঞ্চিত পদ্ধতিতে কল করুন −

mysql> কল Update_table(3,'Larry',@UserMessage);

ক্যোয়ারী ঠিক আছে, 1 সারি প্রভাবিত (0.13 সেকেন্ড)

সিলেক্ট স্টেটমেন্ট ব্যবহার করে ভেরিয়েবল @UserMessage-এর মান পরীক্ষা করুন। প্রশ্নটি নিম্নরূপ -

mysql> @UserMessage নির্বাচন করুন;

নিচের আউটপুট −

<প্রে>+----------------------------+| @UserMessage |+-----------------------------------------+| ডেটাবেস আপডেট করা হয়েছে |+----------------------------+1 সারি সেটে (0.00 সেকেন্ড)

এখন আবার টেবিল রেকর্ড চেক করুন. প্রশ্নটি নিম্নরূপ -

mysql> নির্বাচন করুন *StoredProcedureDemo থেকে;

নিচের আউটপুট −

+------+-------+| আইডি | নাম |+------+------+| 1 | জন || 2 | ক্যারল || 3 | ল্যারি |+------+------+3 সারি সেটে (0.00 সেকেন্ড)

উপরের নমুনা আউটপুট দেখুন, আইডি 3 সহ একটি নতুন রেকর্ড সন্নিবেশ করা হয়েছে। এখন আপনি ত্রুটি বার্তা পাবেন না৷


  1. একটি MySQL সঞ্চিত পদ্ধতিতে NULL বা খালি ভেরিয়েবলের জন্য পরীক্ষা করুন

  2. একটি MySQL সঞ্চিত পদ্ধতির ভেরিয়েবলে একটি কলামের মান সংরক্ষণ করুন

  3. একটি MySQL সঞ্চিত পদ্ধতির ভিতরে ডায়নামিক এসকিউএল ক্যোয়ারী প্রয়োগ করবেন?

  4. এই ক্যোয়ারীতে মাইএসকিউএল সিনট্যাক্স ত্রুটি কী - সংরক্ষিত কীওয়ার্ড দিয়ে একটি টেবিল তৈরি করা?