কম্পিউটার টিউটোরিয়াল

MySQL কি স্টোরড প্রোসিডিউর তৈরির সময়ের এনভায়রনমেন্ট সংরক্ষণ করে?


MySQL স্টোরড প্রোসিডিউর তৈরির সময়ের এনভায়রনমেন্ট সংরক্ষণ করে। উদাহরণ হিসেবে দুটি বারের (||) দিয়ে স্ট্রিং কনক্যাটিনেশন করা হয়েছে যা শুধু SQL মোড ansi-তে বৈধ। কিন্তু SQL মোড non-ansi-এ পরিবর্তন করলেও প্রোসিডিউর কাজ করে যেন মূল সেটিং এখনো সত্য।

উদাহরণ

mysql> Set sql_mode = 'ansi'//
Query OK, 0 rows affected, 1 warning (0.14 sec)
mysql> Create Procedure Con_string()
    -> SELECT 'a'||'b'//
Query OK, 0 rows affected (0.12 sec)
mysql> Call Con_string ();
+----------+
| 'a'||'b' |
+----------+
| ab       |
+----------+
1 row in set (0.05 sec)
Query OK, 0 rows affected (0.05 sec)
mysql> Set sql_mode = '';
Query OK, 0 rows affected (0.00 sec)
mysql> Call Con_string();
+----------+
| 'a'||'b' |
+----------+
| ab       |
+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

ফলাফলে দেখা যাচ্ছে SQL মোড non-ansi-এ পরিবর্তন করলেও Con_string() প্রোসিডিউর একই ফলাফল দিচ্ছে। কিন্তু নতুন প্রোসিডিউর দুটি বার গ্রহণ করবে না কারণ SQL মোড পরিবর্তন হয়েছে।

mysql> create procedure Con_string1()
    -> Select 'a'||'b'//
Query OK, 0 rows affected (0.02 sec)
mysql> Call Con_string1()//
+----------+
| 'a'||'b' |
+----------+
|          0 |
+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected, 2 warnings (0.00 sec)

  1. MySQL স্টোরড প্রোসিডিউরে পুরো টেবিল ফেচ করা

  2. MySQL স্টোরড প্রসিডিউরে @ চিহ্নের ব্যবহার

  3. MySQL স্টোরড প্রোসিডিউরে শর্ত সেট করা (IF...ELSE)

  4. MySQL-এ *.* 권한 부여가 나중에 생성된 데이터베이스에도 적용되나요?