Rumah > pangkalan data > tutorial mysql > Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

WBOY
Lepaskan: 2022-12-07 17:16:07
ke hadapan
2452 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan kandungan yang berkaitan tentang pernyataan SQL lanjutan tentang prosedur tersimpan Mari kita lihat bersama-sama.

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

Pembelajaran yang disyorkan: tutorial video mysql

Penyata SQL lanjutan MySQL (prosedur tersimpan)

1. Gambaran keseluruhan prosedur tersimpan

1.1 Apakah itu prosedur tersimpan

Prosedur tersimpan ialah satu set pernyataan SQL yang direka untuk mencapai fungsi tertentu.
Semasa penggunaan prosedur tersimpan, tugas yang biasa digunakan atau kompleks ditulis terlebih dahulu menggunakan pernyataan SQL dan disimpan dengan nama tertentu Proses ini disusun dan dioptimumkan dan disimpan dalam pelayan pangkalan data. Apabila anda perlu menggunakan prosedur tersimpan ini, anda hanya perlu memanggilnya. Prosedur tersimpan lebih pantas dan lebih cekap dalam pelaksanaan daripada SQL tradisional.

1.2 Kelebihan prosedur tersimpan

  1. Selepas melaksanakan sekali, kod binari yang dihasilkan akan berada di Buffer to meningkatkan kecekapan pelaksanaan.
  2. Koleksi pernyataan SQL ditambah dengan pernyataan kawalan, dengan fleksibiliti yang tinggi.
  3. Disimpan di bahagian pelayan dan mengurangkan beban rangkaian apabila dipanggil oleh pelanggan.
  4. boleh dipanggil beberapa kali dan boleh diubah suai pada bila-bila masa tanpa menjejaskan panggilan pelanggan.
  5. Boleh melengkapkan semua operasi pangkalan data dan mengawal kebenaran capaian maklumat pangkalan data.

2 Buat, panggil dan lihat prosedur tersimpan

2.1 Cipta prosedur tersimpan<.>

delimiter $$                 #将语句的结束符号从分号;临时改为两个$$(可以自定义)
create procedure proc ()     #创建存储过程,过程名为proc,不带参数
-> begin                     #过程体以关键字begin开始
-> select * from store_info; #过程体语句
-> end $$                    #过程体以关键字end结束

delimiter ;                   #将语句的结束符号恢复为分号
Salin selepas log masuk
Contoh:

delimiter $$create procedure proc01 ()-> bengin
-> create table student(id int,name char(10),age int);-> insert into student values(1,'zhangsan',18);-> insert into student values(2,'lisi',18);-> select * from student;-> end $$delimiter ;
Salin selepas log masuk

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

2.2 Memanggil dan melihat prosedur tersimpan

call proc;               #调用存储过程



show create procedure [数据库.]存储过程名;  #查看某个存储过程的具体信息

show create procedure proc;
show create procedure proc\G

show procedure status [like '%proc%'] \G
Salin selepas log masuk
Contoh:

call proc01;   

 show create procedure proc01;
 show create procedure proc01\G       #查看存储过程的具体信息
 
 show procedure status like '%Proc01%'\G
Salin selepas log masuk

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan
Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan
Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

2.3 Padam prosedur tersimpan

 #存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。
drop procedure if exists proc;
 #仅当存在时删除,不添加If EXISTS 时,如果指定的过程不存在,则产生一个错误。
Salin selepas log masuk
Contoh:

drop procedure if exists proc01;
Salin selepas log masuk

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

3. Parameter prosedur tersimpan

  • Parameter input IN : Menunjukkan bahawa pemanggil menghantar nilai kepada proses. (Nilai masuk boleh menjadi literal atau pembolehubah)
  • Parameter output OUT : Menunjukkan bahawa prosedur menghantar nilai kepada pemanggil. (Nilai berbilang boleh dikembalikan) (Nilai keluar hanya boleh menjadi pembolehubah)
  • Parameter input dan output INOUT : Ini bermakna pemanggil menghantar nilai kepada proses, dan proses menghantar nilai kepada pemanggil nilai. (Nilai hanya boleh menjadi pembolehubah)
Nota: Nama pembolehubah tidak boleh mengandungi garis bawah.

delimiter $$create procedure proc2(in stuname char(20))  #参数为stuname,数据类型一定要与下面的where语句后字段的数据类型相同-> begin
-> select * from student where name = stuname;-> end $$delimiter ;call proc2('zhangsan');       #调用存储过程,并传入参数‘zhangsan’
Salin selepas log masuk

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

4. Kawalan penyataan prosedur tersimpan

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

<.>4.1 Pernyataan bersyarat: if-then-else … tamatkan jika

 delimiter $$  
 create procedure proc03(in innum int)   #创建存储过程proc03,参数为innum,类型为int 
 -> begin 
 -> declare var int;         #定义变量var为int类型 
 -> set var=innum*2;         #变量var的值等于传入的参数值乘2
 -> if var>=10 then          #当var的值大于10时,id值会加1,否则减1
 -> update ss set id=id+1;  
 -> else 
 -> update ss set id=id-1;  
 -> end if;  
 -> end $$
  
 delimiter ;
 
 call proc03(8);    #调用存储过程,并传入参数8
 
 call proc03(3);    #调用存储过程,并传入参数3
Salin selepas log masuk

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan

4.2 Penyataan gelung : sambil ···· tamat sementara

 delimiter $$                   #修改默认结束符为$$
 create procedure proc05()      #创建存储过程proc04
 -> begin                       #过程体以关键字begin开始
 -> declare var int(10);        #定义变量var为int类型
 -> set var=0;                  #var的起始值为0
 -> while var insert into ss values(var);  
 -> set var=var+1;              #每次循环后var值自增1
 -> end while;                  #结束while循环
 -> end $$                      #创建存储过程结束
 
 delimiter ;                    #重新修改默认结束符为原始的;
 
 call proc05;                   #调用存储过程proc04
Salin selepas log masuk

Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutanPembelajaran yang disyorkan:

tutorial video mysql

Atas ialah kandungan terperinci Prosedur tersimpan MySQL ringkasan pernyataan SQL lanjutan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan