В MySQL я хочу написать скрипт и поместить в него несколько инструкций CREATE PROCEDURE, по какой-то причине обычная (;) не работает. Есть ли другой способ запустить несколько операторов CREATE в одном скрипте? Если да, то как?Как объединить скрипты CREATE PROCEDURE в MySQL
3
A
ответ
0
Согласно MySQL FAQ:
24.4.8: Можно группировать хранимые процедуры или функции в пакеты?
№ Это не поддерживается в MySQL 5.1.
Если вы на самом деле не пытается сформировать пакет, вы можете попробовать (временно) переопределение разделитель:
delimiter //
4
не так много к нему на самом деле (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);
1
Перед объявлением первой процедуры/функции определить разделитель, таким образом:
DELIMITER |
После объявления первой процедуры/функции закрыть разделитель: |
Сделайте то же самое для каждой процедуры/функции, и весь скрипт будет работать как один.
Таким образом, вы в конечном итоге с этим:
DELIMITER |
script 1 text
|
DELIMITER |
script 2 text
|
DELIMITER |
script 3 text
|
Смежные вопросы
- 1. mysql create procedure script
- 2. CREATE PROCEDURE in mySQL
- 3. CREATE PROCEDURE: MySQL ошибка синтаксиса
- 4. Разочарование ошибки MySQL CREATE PROCEDURE
- 5. create procedure
- 6. CREATE PROCEDURE ошибку
- 7. CREATE PROCEDURE SQL Server
- 8. CREATE Oracle Procedure
- 9. Ошибка в заявлении «create procedure»
- 10. CREATE PROCEDURE в IDE NetBeans
- 11. mysql procedure
- 12. mysql create procedure with spring framework в java
- 13. procedure MySQL using concat
- 14. MySQL UPDATE, если некоторые условия соответствуют (или Create PROCEDURE)
- 15. В чем разница между CREATE PROC и CREATE PROCEDURE?
- 16. Проблемы с mysql create procedure from doctrine raw sql
- 17. MYSQL Create PROCEDURE (если строка содержит, то отклонить добавить)
- 18. "CREATE PROCEDURE ИмяХранимойПроцедура AS" против "CREATE PROCEDURE ИмяХранимойПроцедуры AS BEGIN/END"
- 19. mysql procedure/function
- 20. Невозможно создать Procedure Mysql
- 21. PL/SQL CREATE ИЛИ REPLACE PROCEDURE Использование инструкции CREATE TABLE
- 22. regex for oracle определение «create procedure»
- 23. SQL Неправильный синтаксис при попытке CREATE PROCEDURE
- 24. Энгр DB ошибка E_PS055B CREATE PROCEDURE
- 25. mysql syntax error store procedure
- 26. Java - MySQL Calling Stored Procedure
- 27. GoDaddy cPanel SHOW CREATE PROCEDURE Разрешения после выхода из системы
- 28. CREATE PROCEDURE - как проверить, успешно ли он скомпилирован?
- 29. «CREATE/ALTER PROCEDURE» должен быть первым оператором в пакете запроса
- 30. SELECT WITH CALL PROCEDURE MySQL