程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 如何在mysql5.0中創建存儲過程

如何在mysql5.0中創建存儲過程

編輯:關於MYSQL數據庫

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
//

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved