在MySQL中,我想写一个脚本,并在其中放入多个CREATE PROCEDURE语句,通常的;由于某些原因不能工作。有没有其他方法可以在同一脚本中运行多个CREATE语句?如果是这样的话,是怎么做的?
发布于 2010-10-16 17:08:25
其实不是很多(foo.sql)
您可以使用以下命令从mysql命令行运行此命令。foo.sql
use foo_db;
-- TABLES
drop table if exists users;
create table users
(
user_id int unsigned not null auto_increment primary key,
username varbinary(32) unique not null,
created_date datetime not null
)
engine=innodb;
-- PROCEDURES
drop procedure if exists list_users;
delimiter #
create procedure list_users()
proc_main:begin
select * from users order by username;
end proc_main #
delimiter ;
drop procedure if exists get_user;
delimiter #
create procedure get_user
(
p_user_id int unsigned
)
proc_main:begin
select * from users where user_id = p_user_id;
end proc_main #
delimiter ;
-- TEST DATA
insert into users (username, created_date) values
('f00',now()),('bar',now()),('alpha',now()),('beta',now());
-- TESTING
call list_users();
call get_user(1);发布于 2013-03-22 00:19:48
在第一个过程/函数声明之前定义分隔符,如下所示:
DELIMITER |在第一个过程/函数声明之后,关闭分隔符:|
对每个过程/函数执行相同的操作,整个脚本将作为一个脚本运行。
所以你会得到这样的结果:
DELIMITER |
script 1 text
|
DELIMITER |
script 2 text
|
DELIMITER |
script 3 text
|发布于 2010-10-16 16:21:31
根据MySQL常见问题解答:
24.4.8:可以将存储过程或存储函数分组到包中吗?
不是的。这在MySQL 5.1中不受支持。
如果你不是真的想要形成一个包,你可以尝试(暂时)重新定义分隔符:
delimiter //https://stackoverflow.com/questions/3948030
复制相似问题