如何在mysql5.0中創建存儲過程
2024-07-24 12:40:33
供稿:網友
在mysql5.0 DB 中創建存儲過程與其他DB (oracle,sql server等)有一些語法不同,由于mysql 解析器 一遇到“;”分號時,就開始結束命令的執行。 如創建一個student表 CREATE TABLE student ( stu_id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY, stu_name VARCHAR(15) NOT NULL, age VARCHAR(3) NOT NULL ); 為該表創建一個存儲過程 CREATE PROCEDURE addStudent() BEGIN INSERT INTO student (stu_name, age) VALUES ('22', '2'); END; 提示以下錯誤: MySQL 返回: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'insert into student (stu_name,age) values ('22','3')' at line 3 錯誤分析:按mysql的語法,以上分別創建存儲過程和插入數據都沒錯,那為什么會報出syntax 錯誤呢?那是因為mysql 解析器的工作原理,當你執行以上腳本時,mysql 解析器解析到了insert into后遇到“;”分號,故就結束了本次執行,也就是說它還沒執行到end,為終止了,所以有報語法錯誤。 解決方法: 使用DELIMITER關鍵字申明當前段分隔符,如下 DELIMITER // -- 表示申明開始 create procedure addStudent () begin insert into student (stu_name,age) values ('28','3'); end // --申明結束 調用存儲過程命令為: delimiter ; call addStudent() 就這樣可以完美地實現了存儲過程的創建 以下是使用存儲過程為student表插入10000條記錄 DELIMITER // create procedure add4 () begin DECLARE num int; --申明變量 SET num = 0 ;--給變量賦值 while(num < 100) do insert into student (stu_name,age) values ('kevin','23'); set num = num + 1 ; end while ; end //