2013-12-18 5 views
0

У меня есть следующий запрос, который толкает id в таблицу temp и удаляет записи из другой таблицы, присоединяясь к таблице temp. Я использую ограничение для оптимизации флеш-файлов журнала.Сообщение об ошибке запроса MySQL

SET @StartDate='2012-12-26'; 
SET @EndDate='2014-01-11'; 

INSERT INTO temp_A 
SELECT id FROM A 
WHERE created > @StartDate AND created < @EndDate 
ORDER BY created; 

SET @recordNotFound =0; 

WHILE(@recordNotFound = 0) 
BEGIN 
DELETE 
FROM B 
WHERE EXISTS 
     (SELECT t2.id 
     FROM temp_A AS t2 
     WHERE t2.id = B.txn_id 
) 
ORDER BY txn_id DESC 
LIMIT 1000; 

IF (ROW_COUNT() <> 1000) THEN 
SET @recordNotFound=1; 
END IF; 
END 
END WHILE; 

Я получаю здесь синтаксическую ошибку. Может кто-то, пожалуйста, помогите, что здесь происходит не так?

+6

Если вы указали фактическую синтаксическую ошибку, это облегчит вам и будущим посетителям этот вопрос. –

ответ

0

Нам нужно послать сообщение об ошибке, чтобы быть в состоянии помочь вам, хотя из того, что вы опубликовали, мы можем точно видеть одну вещь - там отсутствует ';' после END до END WHILE;

+0

Спасибо, ребята! Я создал процедуру из нее, и она сработала. Также исправлен синтаксис WHILE, добавив DO. – user3115065

+0

Замечательно это слышать. Лучший способ выразить благодарность в stackoverflow - голосование вверх;) –

0

Пожалуйста, смотрите в manual entry for while.

SET @StartDate='2012-12-26'; 
SET @EndDate='2014-01-11'; 

INSERT INTO temp_A 
SELECT id FROM A 
WHERE created > @StartDate AND created < @EndDate 
ORDER BY created; 

SET @recordNotFound =0; 

WHILE (@recordNotFound = 0) DO /*you're missing a DO here*/ 
#BEGIN /*you don't need this*/ 
DELETE 
FROM B 
WHERE EXISTS 
     (SELECT t2.id 
     FROM temp_A AS t2 
     WHERE t2.id = B.txn_id 
) 
ORDER BY txn_id DESC 
LIMIT 1000; 

IF (ROW_COUNT() <> 1000) THEN 
SET @recordNotFound=1; 
END IF; 
#END /*this line you don't need either*/ 
END WHILE; 
+0

На самом деле этот КОНЕЦ имеет BEGIN - он находится на линии сразу после WHILE. –

+0

О, да. Благодарю. Но обе линии не нужны, как можно видеть в ручном вводе, который я связал. – fancyPants

Смежные вопросы