MySQL學習筆記(25) 儲存過程

2021-08-20 17:00:22 字數 3137 閱讀 5263

儲存過程簡稱過程,procedure,是一種用來處理資料的方式。

儲存過程是一種沒有返回值的函式。

create procedure 過程名字([引數列表])

begin

-- 過程體

end

-- 建立儲存過程

create procedure pro1() -- 假設過程中需要顯示資料:使用select

函式的檢視方式完全適用於過程:關鍵字換成procedure

檢視所有過程:show procedure status[like 'pattern'];

-- 檢視過程

檢視過程建立語句:show create procedure 過程名;

-- 檢視過程建立語句

過程沒有返回值:select是不能訪問的。

過程有乙個專門的呼叫關鍵字:call

-- 呼叫過程

過程只能先刪除,後新增

drop procedure 過程名;

-- 刪除過程

函式的引數需要資料型別指定,過程比函式更嚴格。

過程還有自己的型別限定:三種型別

in:資料只是從外部傳入給內部使用(值傳遞):可以是數值也可以是變數。

out:只允許過程內部使用(不用外部資料),給外部使用的。(引用傳遞:外部的資料會被先清空才會進入到內部):只能是變數。

inout:外部可以在內部使用,內部修改也可以給外部使用:典型的引用傳遞:只能傳變數

基本使用

create procedure 過程名(in 形參名字 資料型別,out 形參名字 資料型別,inout 形參名字 資料型別)

-- 過程引數

delimiter $$

create procedure pro1(in int_1 int,out int_2 int,inout int_3 int)

begin

-- 先檢視三個變數

select int_1,int_2,int_3; -- int_2的值一定是null

呼叫:out和inout型別的引數必須傳入變數,而不能是數值

call pro1(1,2,3);
-- 設定變數

儲存過程對於變數的操作(返回)是滯後的:是在儲存過程呼叫結束的時候,才會重新將內部修改的值賦值給外部傳入的全域性變數。

-- 過程引數

delimiter $$

create procedure pro1(in int_1 int,out int_2 int,inout int_3 int)

begin

-- 先檢視三個變數

select int_1,int_2,int_3; -- int_2的值一定是null(三個當前是區域性變數)

-- 修改區域性變數

set int_1 = 10;

set int_2 = 100;

set int_3 = 1000;

-- 檢視區域性變數

select int_1,int_2,int_3;

-- 檢視全域性變數

select @int_1,@int_2,@int_3;

-- 修改全域性變數

set @int_1 = 'a';

set @int_2 = 'b';

set @int_3 = 'c';

-- 檢視全域性變數

select @int_1,@int_2,@int_3;

end$$

delimiter ;

測試:傳入資料1,2,3:說明區域性變數與全域性變數無關

-- 設定變數

最後:在儲存過程呼叫結束之後,系統會將區域性變數重複返回給全域性變數(out和inout)

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 過程名 過程引數 特...