共計 2720 個字符,預計需要花費 7 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這期內容當中丸趣 TV 小編將會給大家帶來有關如何在 MySQL 中使用存儲結構,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
1. 新建兩張數據表: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 中新增數據
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);
實現功能說明
1. 打印 student1 中的部分信息
2. 把 student1 中的部分數據復制到 student2 中
3. 傳入參數作為限制條件,把 student1 中的部分數據復制到 student2 中
注意事項
在編寫存儲結構的時候,我們不能以分號 (;) 結束。因為我們的 SQL 語句就是以分號 (;) 結尾的。這里我們要修改一下存儲結構的結束符號()。
這里我們使用 MySQL 中的 DELIMITER 進行修改,并在存儲結構創建完畢時,再改為分號 (;) 結束即可。
關于這一點在后面的例子中有所體現。在編寫 MySQL 的觸發器中,也會用到類似的情況。
使用方式
1. 打印 student1 中的部分信息
---------------------------------------------------------------
DROP PROCEDURE IF EXISTS test_pro1;
---------------------------------------------------------------
DELIMITER
CREATE PROCEDURE test_pro1()
BEGIN
set @sentence = select * from student1 where age
prepare stmt from @sentence;
execute stmt;
deallocate prepare stmt;
END
DELIMITER ;
2. 復制表存儲過程的編寫(不帶參數)
---------------------------------------------------------------
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
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. 復制表存儲過程的編寫(帶參數)
---------------------------------------------------------------
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 系統返回值是一樣的。
4. 使用方式
call test_pro1();
or
call test_pro1(123);
上述就是丸趣 TV 小編為大家分享的如何在 MySQL 中使用存儲結構了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注丸趣 TV 行業資訊頻道。
向 AI 問一下細節