MySQL 建立儲存過程(PROCEDURE)

2021-08-09 21:00:40 字數 1543 閱讀 1749

-- 建立乙個儲存過程模板

drop procedure if exists proc_module; -- 先刪除即將要建立儲存過程,需要校驗是否存在,否則會報錯

delimiter ;; -- 修改結束符,因為儲存過程中會使用;作為結束符

-- 建立儲存過程,引數分in/out/inout三類

-- in是輸入引數,可以有多個

-- out是輸出引數,可以輸出給呼叫該儲存過程的應用進行引數引用,使用方式為call proc_module( din_temp, @dout_temp, @dinout_temp)

-- inout是輸入輸出引數,輸出屬性參見out引數

create procedure proc_module (in din int, out dout int, inout dinout int)

begin

declare strtemp varchar(128) character set utf8; -- 定義乙個儲存過程內的變數,可以通過設定字符集,在展示時保持編碼一致性

declare inttemp int; -- 也可以不設定字符集

start transaction; -- 開始乙個事務,乙個儲存過程可以存在多個事務,在commit時結束

-- 進行相關插入操作

-- 直接使用傳入的引數

insert into dbname.tablename1 (field1, field2,...) select field2_1, field2_2, din, dinout from dbname.tablename2 where ...;

-- 通過select into直接給變數賦值

select concat("剩餘數量:",count(1),"個"), count(1) into strtemp, inttemp from dbname.tablename1 where ...;

commit; -- 事務提交,如果其中丟擲異常則不進行提交,整個事務回滾,事務終止此

-- if判斷語句,組合為if ... then ... elseif ... then ... else ... end if

-- 示例如下

if din = 0 then

set strtemp = "請賦值"; -- 通過set也可以給引數進行賦值

set dinout=0; -- 為輸入輸出引數賦值

elseif inttemp = 0 then

set strtemp = "數量為空";

set dinout=0;

else

select strtemp; -- 儲存過程直接輸出的內容

end if; -- 結束if判斷

end;; -- 結束儲存過程建立內容

delimiter ; -- 修改結束符,恢復為;

call proc_module( din_temp, @dout_temp, @dinout_temp); -- 呼叫儲存過程

select @dout_temp, @dinout_temp; -- 使用輸出的引數

MySQL建立儲存過程

在開發過程中,經常會遇到重複使用某乙個功能的情況,為此,mysql引入了儲存過程 儲存過程 就是一條或多條sql語句的集合,當對資料庫進行一系列複雜操作時,儲存過程可以將這些複雜操縱,封裝成乙個 塊,以便重複使用,大大減少資料庫開發人員的工作量 使用create procedure語句 create...

MYSQL 建立儲存過程

無引數儲存過程 delimiter create procedure myfist proc 建立儲存過程 begin select stu id from score where grade 80 and c name 計算機 select name from student where id i...

mysql建立儲存過程

坑一 mysql建立儲存過程中,儲存過程的輸入引數變數命名不應該與欄位名相同。如果相同,導致的結果就是引數的值將不會是你傳入的值,而是變成每條記錄的那個欄位的值。如果在刪除操作時,將會刪除整張表的記錄,是非常危險的。刪除儲存過程 drop procedure if exists pro test 建...