mysql學習筆記之儲存過程學習筆記

2021-07-23 20:35:42 字數 4797 閱讀 4176

儲存過程學習筆記

什麼叫儲存過程

儲存過程,

帶有邏輯的

sql語句

儲存過程特點

1

)執行效率非常快!儲存過程是在資料庫的伺服器端執行的!!!

2

)移植性很差!不同資料庫的儲存過程是不能移植。

建立儲存過程

delimiter $    --宣告儲存過程的結束符

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

begin         --   開始

-- 可以寫多個sql語句    --sql語句+流程控制

select *from employee;

end $                             --結束  結束符

--執行儲存過程

call pro_test();

引數:

in: 表示輸入引數,可以攜帶資料到儲存過程中

out: 便是輸出引數,可以從儲存過程中返回結果

inout:即可以有輸出也可以有輸入

-- 帶有儲存誰引數的儲存過程

-- 需求:傳入乙個員工的id,查詢員工資訊

--建立

delimter $

create proocedure pro_findbyid(in eid int) --in:輸入引數

begin

select * from employee where id=eid;

end$

--呼叫

call pro_findbyid(4);

--需求帶有輸出引數的儲存過程

建立

delimter $

create proocedure pro_findbyid(out str varchar(20)) --out:輸出引數

begin

set str="sssss";

end$

--mysql的變數:全域性變數(內建變數),檢視全域性變數 :show variables(所有連線鬥氣作用)

--檢視某個全域性變數:select @@變數名

-- character_set_cliect: 伺服器接受客戶端的編碼格式                       set  character_set_cliect=gbk:在命令性執行可以改變編碼格式

--character_set_result;反之

--會話變數:只存在於當前客戶端與資料庫服務端的一次連線中。如果連線中斷會話變數會全部丟失

--定義會話變數:set@變數=值

--檢視會話變數:select @變數

--區域性變數:在儲存過程工資高使用的變數。只要儲存過程執行完畢區域性變數就會消失不用@

-- 定義乙個會話變數  使用name會話變數接收儲存過程的返回值

call pro_  pro_findbyid( @name);

檢視變數

select @name;

刪除儲存過程: drop procedure pro_findbyid ;

--有輸入輸出的儲存過程

delimter $

create proocedure pro_testinout(inout n int) --out:輸出引數

begin

--檢視變數

select n;

set n=500;

end$

--呼叫

set @n=10;

call     pro_testinout (@n);

select @n;

--帶有條件判斷的儲存過程邏輯

--需求 輸入乙個整數,如果1 返回星期一,如果2 ,返回星期二如果 ,3返回星期三    其他,

delimter $

create proocedure pro_testif(in num int,out str varchar(20)) --out:輸出引數

begin

if num=1 then

set str="星期一";

else if num=2 then

set str="星期二";

else if num=3 then

set str="星期三";

end if;

end$

call pro_testif(4,@test);

select @test;

3.5 帶有迴圈功能的儲存過程

--需求:輸入乙個整數

delimter $

create proocedure pro_testwhile(in num int,out result int) --out:輸出引數

begin

--定義乙個索引變數,區域性變數

declare i int default 1;

declare vsum int defalt 0;

while iset vsum=vsum+i;

set i=i+1;

end while

set result=vsum;

end$

call pro_testwhile(100,@result);

select @reuslt;

--語法·:使用查詢的結果複製給變數(into)

delimter $

create proocedure (in eid int,out vname varchar(20)) --out:輸出引數

begin

select empnmae into vnamefrom employee where id=eid;

end$

call  pro_testid2(1,@name);

select @name;

mysql學習筆記 儲存過程

sql view plain copy use test drop table if exists t8 create table t8 s1 int,primary key s1 drop procedure if exists handlerdemo delimiter create proce...

Mysql儲存過程學習筆記

在pl sql中,主要包括declare部分 宣告引數 begin.end部分和例外部分。mysql儲存過程建立的格式 create procedure過程名 過程引數 特性.過程體 選中 函式右鍵 新建建立 完成 輸入函式體 儲存名字 語法 create procedire 儲存過程命名 開始 函...

mysql儲存過程學習筆記

儲存過程理解 1.儲存過程 類似函式或者方法,是一組為了完成特定功能的sql語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數 如果該儲存過程帶有引數 來呼叫執行它。2.mysql儲存過程的建立 mysql儲存過程建立的格式 create procedure 過程名 過程引數 特...