這期內(nèi)容當中小編將會給大家?guī)碛嘘P如何在MySQL中使用存儲結構,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供雙灤網(wǎng)站建設、雙灤做網(wǎng)站、雙灤網(wǎng)站設計、雙灤網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、雙灤企業(yè)網(wǎng)站模板建站服務,十余年雙灤做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
1.新建兩張數(shù)據(jù)表:student1, student2
新建student1
DROP TABLE IF EXISTS student1; CREATE TABLE student1 ( id INT NOT NULL auto_increment, name TEXT, age INT, PRIMARY KEY(id) );
新建student2
DROP TABLE IF EXISTS student2; CREATE TABLE student2 ( id INT NOT NULL auto_increment, name TEXT, age INT, PRIMARY KEY(id) );
2.向student1中新增數(shù)據(jù)
INSERT INTO student1 (name, age) VALUES ('xiaoming', 18); INSERT INTO student1 (name, age) VALUES ('xiaohong', 17); INSERT INTO student1 (name, age) VALUES ('xiaogang', 19); INSERT INTO student1 (name, age) VALUES ('xiaoyu', 18); INSERT INTO student1 (name, age) VALUES ('xiaohua', 20);
實現(xiàn)功能說明
1.打印student1中的部分信息
2.把student1中的部分數(shù)據(jù)復制到student2中
3.傳入?yún)?shù)作為限制條件,把student1中的部分數(shù)據(jù)復制到student2中
注意事項
在編寫存儲結構的時候,我們不能以分號(;)結束。因為我們的SQL語句就是以分號(;)結尾的。這里我們要修改一下存儲結構的結束符號(&&)。
這里我們使用MySQL中的DELIMITER進行修改,并在存儲結構創(chuàng)建完畢時,再改為分號(;)結束即可。
關于這一點在后面的例子中有所體現(xiàn)。在編寫MySQL的觸發(fā)器中,也會用到類似的情況。
使用方式
1.打印student1中的部分信息
--------------------------------------------------------------- DROP PROCEDURE IF EXISTS test_pro1; --------------------------------------------------------------- DELIMITER && CREATE PROCEDURE test_pro1() BEGIN set @sentence = 'select * from student1 where age<19;'; prepare stmt from @sentence; execute stmt; deallocate prepare stmt; END && DELIMITER ;
2.復制表存儲過程的編寫(不帶參數(shù))
--------------------------------------------------------------- DROP PROCEDURE IF EXISTS test_pro2; --------------------------------------------------------------- DELIMITER && create procedure test_pro2() begin DECLARE stop_flag INT DEFAULT 0; DECLARE s_name TEXT default ''; DECLARE s_age INT default 0; DECLARE cur1 CURSOR FOR (select name, age from student1 where age<19); DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1; open cur1; fetch cur1 into s_name, s_age; while stop_flag<>1 DO insert into student2(name, age) values(s_name, s_age); fetch cur1 into s_name, s_age; end while; close cur1; end && DELIMITER ;
3.復制表存儲過程的編寫(帶參數(shù))
--------------------------------------------------------------- DROP PROCEDURE IF EXISTS test_pro3; --------------------------------------------------------------- DELIMITER && create procedure test_pro3(IN p_age INT) begin DECLARE stop_flag INT DEFAULT 0; DECLARE s_name TEXT default ''; DECLARE s_age INT default 0; DECLARE cur1 CURSOR FOR (select name, age from student1 where age<p_age); DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1; open cur1; fetch cur1 into s_name, s_age; while stop_flag<>1 DO insert into student2(name, age) values(s_name, s_age); fetch cur1 into s_name, s_age; end while; close cur1; end && DELIMITER ;
這里的SQLSTATE '02000'和NOT FOUND系統(tǒng)返回值是一樣的。
4.使用方式
call test_pro1();
or
call test_pro1(123);
上述就是小編為大家分享的如何在MySQL中使用存儲結構了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標題名稱:如何在MySQL中使用存儲結構
本文URL:http://jinyejixie.com/article26/iiesjg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、網(wǎng)站營銷、網(wǎng)站排名、網(wǎng)站維護、響應式網(wǎng)站、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)