Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL membuat sintaks prosedur tersimpan dengan pembatas

Memulai sintaks prosedur tersimpan di MySQL (menggunakan terminal):

1. Buka terminal dan login ke mysql seperti ini:

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

2. Lihat apakah Anda memiliki prosedur:

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)

Saya sudah menetapkan satu, Anda mungkin tidak memilikinya untuk memulai.

3. Ubah ke database, hapus.

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. Ok jadi sekarang saya tidak memiliki prosedur tersimpan yang ditentukan. Buat yang paling sederhana:

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

// akan berkomunikasi ke terminal ketika Anda selesai memasukkan perintah untuk prosedur tersimpan. nama prosedur tersimpan adalah foobar. tidak memerlukan parameter dan akan menampilkan "halo".

5. Lihat apakah itu ada, ingatlah untuk mengatur kembali pembatas Anda!:

 mysql> show procedure status;
 -> 
 -> 

Kena kau! Mengapa ini tidak berhasil? Anda menyetel pembatas ke // ingat? Setel kembali ke ;

6. Setel kembali pembatas dan lihat prosedurnya:

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. Jalankan:

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

Halo dunia yang lengkap, mari kita timpa dengan sesuatu yang lebih baik.

8. Jatuhkan foobar, definisikan ulang untuk menerima parameter, dan jalankan kembali:

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)

Bagus! Kami membuat prosedur yang mengambil input, memodifikasinya, dan melakukan output. Sekarang mari kita buat variabel keluar.

9. Hapus foobar, Buat variabel keluar, jalankan:

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. Contoh penggunaan INOUT di MySQL:

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)

Ok itu berhasil, itu menggabungkan string bersama. Jadi Anda mendefinisikan variabel msg, meneruskan variabel itu ke dalam prosedur tersimpan yang disebut foobar, dan @msg ditulis oleh foobar.

Sekarang Anda tahu cara membuat prosedur tersimpan dengan pembatas. Lanjutkan tutorial ini di sini, mulai dengan variabel dalam prosedur tersimpan: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. Cara Menghitung Selisih Antara Dua Tanggal di MySQL

  2. Bagaimana cara memilih baris yang memiliki stempel waktu hari ini?

  3. Cara Memperbaiki Database MySQL di cPanel

  4. Bagaimana menemukan semua tabel yang memiliki kunci asing yang mereferensikan table.column tertentu dan memiliki nilai untuk kunci asing tersebut?

  5. jQuery UI Diurutkan, lalu tulis pesanan ke dalam database