Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL डिलीमीटर के साथ संग्रहीत कार्यविधि सिंटैक्स बनाता है

MySQL (टर्मिनल का उपयोग करके) में संग्रहीत कार्यविधि सिंटैक्स के साथ आरंभ करना:

<मजबूत>1. एक टर्मिनल खोलें और इस तरह mysql में लॉगिन करें:

[email protected]:~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> 

<मजबूत>2. यह देखने के लिए देखें कि क्या आपके पास कोई प्रक्रिया है:

mysql> show procedure status;
+-----------+---------------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db        | Name          | Type      | Definer | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-----------+---------------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
|   yourdb  | sp_user_login | PROCEDURE | [email protected]%  | 2013-12-06 14:10:25 | 2013-12-06 14:10:25 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+-----------+---------------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.01 sec)

मेरे पास एक परिभाषित है, शायद आपके पास शुरू करने के लिए कोई नहीं है।

<मजबूत>3. डेटाबेस में बदलें, इसे हटाएं।

mysql> use yourdb;
Database changed

mysql> drop procedure if exists sp_user_login;
Query OK, 0 rows affected (0.01 sec)
    
mysql> show procedure status;
Empty set (0.00 sec)
    

<मजबूत>4. ठीक है तो अब मेरे पास कोई संग्रहित प्रक्रिया परिभाषित नहीं है। सबसे सरल बनाएं:

mysql> delimiter //
mysql> create procedure foobar()
    -> begin select 'hello'; end//
Query OK, 0 rows affected (0.00 sec)

जब आप संग्रहीत कार्यविधि के लिए कमांड दर्ज कर रहे हों, तो // टर्मिनल से संचार करेगा। संग्रहीत कार्यविधि का नाम foobar है। इसमें कोई पैरामीटर नहीं है और इसे "हैलो" वापस करना चाहिए।

<मजबूत>5. देखें कि क्या यह वहां है, अपने सीमांकक को वापस सेट करना याद रखें!:

 mysql> show procedure status;
 -> 
 -> 

गोचा! यह काम क्यों नहीं किया? आपने सीमांकक को // . पर सेट किया है याद रखना? इसे वापस ; . पर सेट करें

<मजबूत>6. सीमांकक को वापस सेट करें और प्रक्रिया देखें:

mysql> delimiter ;
mysql> show procedure status;
+-----------+--------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db        | Name   | Type      | Definer        | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+-----------+--------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| yourdb    | foobar | PROCEDURE | [email protected] | 2013-12-06 14:27:23 | 2013-12-06 14:27:23 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+-----------+--------+-----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
1 row in set (0.00 sec)

   

<मजबूत>7. इसे चलाएं:

mysql> call foobar();
+-------+
| hello |
+-------+
| hello |
+-------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

हैलो वर्ल्ड कम्प्लीट, आइए इसे कुछ बेहतर के साथ ओवरराइट करें।

<मजबूत>8. फ़ोबार ड्रॉप करें, इसे एक पैरामीटर स्वीकार करने के लिए फिर से परिभाषित करें, और इसे फिर से चलाएँ:

mysql> drop procedure foobar;
Query OK, 0 rows affected (0.00 sec)

mysql> show procedure status;
Empty set (0.00 sec)

mysql> delimiter //
mysql> create procedure foobar (in var1 int)
    -> begin select var1 + 2 as result;
    -> end//
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> call foobar(5);
+--------+
| result |
+--------+
|      7 |
+--------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

अच्छा! हमने एक प्रक्रिया बनाई जो इनपुट लेती है, उसे संशोधित करती है और आउटपुट करती है। अब एक आउट वेरिएबल करते हैं।

<मजबूत>9. फ़ोबार हटाएं, एक आउट वेरिएबल बनाएं, इसे चलाएं:

mysql> delimiter ;
mysql> drop procedure foobar;
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter //
mysql> create procedure foobar(out var1 varchar(100))
    -> begin set var1="kowalski, what's the status of the nuclear reactor?";
    -> end//
Query OK, 0 rows affected (0.00 sec)


mysql> delimiter ;
mysql> call foobar(@kowalski_status);
Query OK, 0 rows affected (0.00 sec)

mysql> select @kowalski_status;
+-----------------------------------------------------+
| @kowalski_status                                    |
+-----------------------------------------------------+
| kowalski, what's the status of the nuclear reactor? |
+-----------------------------------------------------+
1 row in set (0.00 sec)

<मजबूत>10. MySQL में INOUT उपयोग का उदाहरण:

mysql> select 'ricksays' into @msg;
Query OK, 1 row affected (0.00 sec)


mysql> delimiter //
mysql> create procedure foobar (inout msg varchar(100))
-> begin
-> set msg = concat(@msg, " never gonna let you down");
-> end//


mysql> delimiter ;


mysql> call foobar(@msg);
Query OK, 0 rows affected (0.00 sec)


mysql> select @msg;
+-----------------------------------+
| @msg                              |
+-----------------------------------+
| ricksays never gonna let you down |
+-----------------------------------+
1 row in set (0.00 sec)

ठीक है यह काम किया, यह एक साथ तार में शामिल हो गया। तो आपने एक वेरिएबल msg को परिभाषित किया, उस वेरिएबल में foobar नामक संग्रहित प्रक्रिया में पारित किया गया, और @msg को foobar द्वारा लिखा गया था।

अब आप जानते हैं कि डिलीमीटर के साथ संग्रहीत कार्यविधियाँ कैसे बनाई जाती हैं। इस ट्यूटोरियल को यहां जारी रखें, संग्रहीत कार्यविधियों के भीतर चरों पर प्रारंभ करें:http ://net.tutsplus.com/tutorials/an-introduction-to-stored-procedures/



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL क्लाइंट एप्लिकेशन का उपयोग करना

  2. मैं MySQL में पायथन में शब्दकोशों की सूची डालने के लिए एक्ज़ीक्यूटमैनी का उपयोग कैसे कर सकता हूँ?

  3. पायथन में MySQL संग्रहीत प्रक्रिया को कैसे कॉल करें

  4. डे () उदाहरण – MySQL

  5. पीडीओ कनेक्शन को ठीक से कैसे सेट करें