資料庫儲存過程

2022-08-10 12:15:11 字數 3996 閱讀 6844

優點:1、提高**的重用性 2、簡化操作

含義:一組預先編譯好的sql語句的集合,理解成批處理語句

1、提高**的重用性

2、簡化操作

3、減少了編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率

建立語法:

create procedure 儲存過程名(引數列表)

begin

儲存過程體(一組合法的sql語句)

end注意事項:

1、引數列表包含三部分

引數模式 引數名 引數型別

舉例:in stuname varchar(20)

引數模式:

in:該引數可以作為輸入,也就是該引數需要呼叫方傳入值

out:該引數可以作為輸出,也就是該引數可以作為返回值

inout:該引數既可以作為輸入又可以作為輸出,也就是該引數既需要傳入值,又可以返回值

2、如果儲存過程體僅僅只有一句話,begin end可以省略

儲存過程體中的每條sql語句的結尾要求必須加分號。

儲存過程的結尾可以使用 delimiter 重新設定

語法:delimiter 結束標記

案例:delimiter $

刪除儲存過程

drop procedure sp_name(儲存過程名稱)

注:一次只能刪除乙個儲存過程

顯示儲存過程狀態

show procedure status

實際操作例子1:

##新建表成功

create table mytable4(  

stuid int not null,  

username varchar(16) not null,

city varchar(50) not null,

age int not null,

stuname varchar(16)  not null,

primary key(stuid),

index index_age(age)

); ##為已有表新增索引

create index index_stuname on mytable4(stuname);

##儲存過程

select * from mytable4;

delimiter $

create procedure setvalue()

begin

insert into mytable4 (stuid,username,city,age,stuname) values (1,"wang","beijing",23,"wang");

end $

call setvalue()$

實際操作例子2:

#案例1:建立儲存過程實現 根據女神名,查詢對應的男神資訊

create procedure myp2(in beautyname varchar(20))

begin

select bo.*

from boys bo

right join beauty b on bo.id = b.boyfriend_id

where b.name=beautyname;

end $

#呼叫call myp2(『任盈盈')$

#案例2 :建立儲存過程實現,使用者是否登入成功

create procedure myp4(in username varchar(20),in password varchar(20))

begin

declare result int default 0; #宣告並初始化

select count(*) into result#賦值

from admin

where admin.username = username

and admin.password = password;

select if(result>0,'成功','失敗'); #使用

end $

#呼叫call myp3('張飛','8888')$

實際操作例子3:

#案例1:根據輸入的女神名,返回對應的男神名

create procedure myp6(in beautyname varchar(20),out boyname varchar(20))

begin

select bo.boyname into boyname

from boys bo

right join

beauty b on b.boyfriend_id = bo.id

where b.name=beautyname ;

end $

呼叫:set @bname $

call myp6('任盈盈',@bname) $

select @bname$

案例2:根據輸入的女神名,返回對應的男神名和魅力值

create procedure myp7(in beautyname varchar(20),out boyname varchar(20),out usercp int)

begin

select boys.boyname ,boys.usercp into boyname,usercp

from boys

right join

beauty b on b.boyfriend_id = boys.id

where b.name=beautyname ;

end $

#呼叫call myp7('小昭',@name,@cp)$

select @name,@cp$

經典案例:

向該乙個表插入指定個數的,隨機的字串

*/drop table if exists stringcontent;

create table stringcontent(

id int primary key auto_increment,

content varchar(20)

);delimiter $

create procedure test_randstr_insert(in insertcount int)

begin

declare i int default 1;

declare str varchar(26) default 'abcdefghijklmnopqrstuvwxyz';

declare startindex int; #代表初始索引

declare len int; #代表擷取的字元長度

while i<=insertcount do

set startindex=floor(rand()*26+1); #代表初始索引,隨機範圍1-26

set len=floor(rand()*(20-startindex+1)+1); #代表擷取長度,隨機範圍1-(20-startindex+1)

insert into stringcontent(content) values(substr(str,startindex,len));

set i=i+1;

end while;

end $

call test_randstr_insert(10)$

#案例1:建立儲存過程實現 根據女神名,查詢對應的男神資訊

create procedure myp2(in beautyname varchar(20))

begin

select bo.*

from boys bo

right join beauty b on bo.id = b.boyfriend_id

where b.name=beautyname;

end $

#呼叫call myp2(『任盈盈')$

資料庫 儲存過程

儲存過程,stored procedure,是在大型資料庫系統中,一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。模擬於c中的函式。mysql與sqlserver是不同的。建立儲存過程 conn getconnec...

資料庫 儲存過程

在資料庫中,儲存過程屬於一種物件,是一種高效的安全的訪問資料庫的方法。下邊我們就資料庫中的儲存過程總結它的相關知識點。我們分為概述,實現和管理三個方面來總結。一,儲存過程的概述 1,概念 儲存過程 storedprocedure 是在資料庫伺服器端執行的一組t sql語句的集合,經編譯後存放在資料庫...

資料庫 儲存過程

一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中。使用者通過指定儲存過程的名字並給出引數 如果有引數 來執行它。系統儲存過程 以sp 開頭,用來進行系統的各項設定.取得資訊.相關管理工作。本地儲存過程 使用者建立的儲存過程是由使用者建立並完成某一特定功能的儲存過程,這跟各種程式語言裡使用...