標籤:技術 城市 數值 插入資料 code -- 賦值 上海 proc
基礎查詢
首先建立一張students學生表,增加欄位與插入資料如下
建立不帶參數的預存程序
查看學生個數
DROP PROCEDURE IF EXISTS select_students_count; -- 沒有括弧()
DELIMITER ;;CREATE PROCEDURE `select_students_count`()BEGIN SELECT count(id) from students;END;;DELIMITER ;
執行預存程序
call select_students_count();
帶參數的預存程序
根據城市查詢總數
DROP PROCEDURE IF EXISTS select_students_by_city_count;
DELIMITER ;;CREATE PROCEDURE `select_students_by_city_count`( in _city varchar(225))BEGIN SELECT count(id) from students where city = _city;END;;DELIMITER ;
執行預存程序
call select_students_by_city_count(‘杭州‘);
帶有輸出參數的預存程序
根據姓名查詢的學生資訊,返回學生的城市
DROP PROCEDURE IF EXISTS select_students_by_name;
DELIMITER ;;CREATE PROCEDURE `select_students_by_name`( in _name varchar(225), -- 輸入參數 out _city varchar(225), -- 輸出參數 inout _age int(11) -- 輸入輸出參數)BEGIN SELECT city from students where name = _name and age = _age into _city;END;;DELIMITER ;
執行預存程序
set @_age = 20;set @_name = ‘jack‘;call select_students_by_name(@_name, @_city, @_age);select @_city as city, @_age as age;
MySQL支援IN(傳遞給預存程序),OUT(從預存程序傳出)和INOUT(對預存程序傳入和傳出)類型的參數。預存程序的代碼位於BEGIN和END語句內,如前所見,它們是一系列SELECT語句,用來檢索值,然後儲存到相應的變數(通過指定INTO關鍵字)
帶有萬用字元的預存程序
萬用字元,在參數值賦值時,加上相應的萬用字元
DROP PROCEDURE IF EXISTS select_students_by_likename;
DELIMITER ;;CREATE PROCEDURE `select_students_by_likename`( in _likename varchar(225) )BEGIN set _likename = ‘%s%‘; -- 預設值 SELECT * from students where name like _likename;END;;DELIMITER ;
執行預存程序
call select_students_by_likename(‘%s%‘);
使用預存程序進行增刪改
新增
新增學生資訊
DROP PROCEDURE IF EXISTS insert_student;
DELIMITER ;;CREATE PROCEDURE `insert_student`( _id int, _name varchar(225), _age int, _city varchar(225))BEGIN INSERT INTO students(ID,name,age,city) VALUES(_id,_name,_age,_city);END;;DELIMITER ;
執行預存程序
call insert_student(5,‘張三‘,19,‘上海‘);
執行完後表中就多了一條資料
修改
根據學生ID,更新學生資訊
DROP PROCEDURE IF EXISTS update_student;
DELIMITER ;;CREATE PROCEDURE `update_student`( _id int, _name varchar(225), _age int, _city varchar(225))BEGIN UPDATE students SET name=_name, age=_age, city=_city where ID = _id;END;;DELIMITER ;
執行預存程序
call update_student(5,‘amy‘,22,‘杭州‘);
刪除
根據ID,刪除某學生記錄
DROP PROCEDURE IF EXISTS delete_student_by_id;
DELIMITER ;;CREATE PROCEDURE `delete_student_by_id`( _id int)BEGIN DELETE FROM students where ID = _id;END;;DELIMITER ;
執行預存程序
call delete_student_by_id(5);
students表中id為5的那條記錄就刪除了
mysql預存程序