首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中组合创建过程脚本

问如何在MySQL中组合创建过程脚本
EN

Stack Overflow用户
提问于 2010-10-16 15:22:26
回答 3查看 8K关注 0票数 4

在MySQL中,我想写一个脚本,并在其中放入多个CREATE PROCEDURE语句,通常的;由于某些原因不能工作。有没有其他方法可以在同一脚本中运行多个CREATE语句?如果是这样的话,是怎么做的?

EN

回答 3

Stack Overflow用户

发布于 2010-10-16 17:08:25

其实不是很多(foo.sql)

您可以使用以下命令从mysql命令行运行此命令。foo.sql

代码语言:javascript
复制
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);
票数 5
EN

Stack Overflow用户

发布于 2013-03-22 00:19:48

在第一个过程/函数声明之前定义分隔符,如下所示:

代码语言:javascript
复制
DELIMITER |

在第一个过程/函数声明之后,关闭分隔符:|

对每个过程/函数执行相同的操作,整个脚本将作为一个脚本运行。

所以你会得到这样的结果:

代码语言:javascript
复制
DELIMITER |
 script 1 text
|

DELIMITER |
 script 2 text
|

DELIMITER |
 script 3 text
|
票数 1
EN

Stack Overflow用户

发布于 2010-10-16 16:21:31

根据MySQL常见问题解答:

24.4.8:可以将存储过程或存储函数分组到包中吗?

不是的。这在MySQL 5.1中不受支持。

如果你不是真的想要形成一个包,你可以尝试(暂时)重新定义分隔符:

代码语言:javascript
复制
delimiter //
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3948030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档