久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何在MySQL中使用存儲結構

126次閱讀
沒有評論

共計 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 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2720字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阜城县| 莲花县| 汉中市| 永仁县| 乐陵市| 桃园县| 托克逊县| 迁安市| 正镶白旗| 清苑县| 乌兰县| 汉寿县| 盐津县| 崇仁县| 克什克腾旗| 彭山县| 四会市| 宁河县| 松滋市| 永泰县| 名山县| 昌图县| 阳山县| 沙田区| 双辽市| 塔城市| 横峰县| 临武县| 榆中县| 阿克苏市| 正定县| 徐水县| 康乐县| 石景山区| 南靖县| 伊春市| 宜兰市| 大英县| 巨野县| 昔阳县| 乌兰察布市|