2009-03-17 3 views
0

Я новичок в синтаксисе MySQL.MySQL Query

Я создал процедуру и запустил ее, но она показывает некоторый синтаксис probem, вы можете мне помочь?

Моя процедура, как:

**DELIMITER $$ 
CREATE PROCEDURE TestAdd(
    in mODE varchar(10), 
    in Id int, 
    in AttName varchar(10), 
    in AttValues Varchar(10) 
) 
IF EXISTS (SELECT * FROM AttTable WHERE id=Id) THEN 
    SET Mode='Modify' 
ELSE 
    SET Mode='Add' 
    Start Transaction 
    BEGIN 
     IF (mODE='Add') THEN 
      insert into atttable values (Id, AttName, AttValue); 
     ELSE (if Mode='Modify') then 
      update AttTable set AttName=AttName, AttValue= AttValue where Id=Id; 
     END IF 
    END 
$$ 
Delimiter ;** 

Whre я делаю не так ?? Спасибо заранее.

+2

Вы должны сообщить нам, как это происходит. – chaos

+1

Что он должен делать? Что это на самом деле делает? И почему он не отформатирован, чтобы быть даже наименее читаемым? – kquinn

+0

также посмотрите в синтаксисе SELECT FOR UPDATE или вы в конечном итоге с условиями гонки – yaauie

ответ

2

Вам нужен BEGIN сразу после списка параметров в начале, и соответствующий END в конце процедуры:

create procedure TestAdd(blah...) 
BEGIN 
    ... 

END$$ 

Ваш первый IF вызов отсутствующего как THEN и END IF:

if exists (select * from AttTable where id=Id) THEN 
    set... 
ELSE 
    set... 
END IF 

Каждое из утверждений должно быть прекращено с помощью ;

set Mode='Modify'; 
set Mode='Add'; 
Start Transaction; 
+0

Вы уверены, что утверждения должны быть прерваны: a; –