-- 建立乙個儲存過程模板
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 建...