Как использовать процедуру в сценарии SQL? - PullRequest
0 голосов
/ 27 января 2010

Если я запускаю каждый блок этого скрипта в mysql-query-browser, он работает.

Если я запускаю его как mysql db < script.sql, это дает мне ошибку [1], что в документации говорится, что она использует зарезервированные ключевые слова.

Уже пытался использовать; во всем мире.

-- table
CREATE TABLE `days` (
  `day` date NOT NULL,
  PRIMARY KEY  (`day`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

-- proc
CREATE PROCEDURE db.filldays()
BEGIN
  DECLARE v1 DATE DEFAULT '2039-01-01';
  WHILE v1 > '2009-01-01' DO
    INSERT days VALUES (v1);
    SET v1 =  DATE_SUB( v1, INTERVAL 1 DAY );
  END WHILE;
END

-- call proc
call filldays();

-- clean
drop procedure filldays;

[1] ошибка: ОШИБКА 1064 (42000) в строке 8: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 3

1 Ответ

1 голос
/ 27 января 2010

вам нужно изменить РАЗДЕЛИТЕЛЬ до СОЗДАНИЯ ПРОЦЕДУРЫ и вернуть обратно; после.

DELIMITER $$

ПРОЦЕДУРА СОЗДАНИЯ db.filldays ()
НАЧАТЬ
DECLARE v1 DATE DEFAULT '2039-01-01';
WHILE v1> '2009-01-01' DO
ВСТАВИТЬ ДЕНЬГИ (v1);
SET v1 = DATE_SUB (v1, ИНТЕРВАЛ 1 ДЕНЬ);
END WHILE;
КОНЕЦ $$
РАЗДЕЛИТЕЛЬ;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...