mysql預存程序

來源:互聯網
上載者:User

標籤:技術   城市   數值   插入資料   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(對預存程序傳入和傳出)類型的參數。預存程序的代碼位於BEGINEND語句內,如前所見,它們是一系列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預存程序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.