2013-07-08 3 views
2

У меня есть следующий код SQL:If-оператор в хранимой процедуре MySQL для выбора данных

DELIMITER $$ 

CREATE PROCEDURE `test`.`new_procedure` (queryString VARCHAR(255)) 
BEGIN 
    SELECT @tempValue = COUNT(*) FROM test.userdata_extended WHERE inn LIKE queryString; 
    IF @tempValue > 0 SELECT * FROM test.userdata_extended WHERE inn LIKE queryString; 
END $$ 

Я Поставив COUNT* результат в @tempValue переменной. Тогда я пытаюсь сравнить его за то, что он больше нуля.

Я получаю сообщение об ошибке, связанной с процессом сравнения. MySQL сообщает мне ошибку UNEXPECTED SELECT SYM. Что это значит?

Также это будет проверка на наличие других таблиц. Мне нужны инструкции IF-ELSE, потому что, основываясь на нескольких результатах запроса, моя процедура должна возвращать точное значение ошибки кода (которое может быть другим) для моего разработанного приложения для обработки или предоставления данных, если все в порядке.

Как исправить эту проблему?

Благодаря

ответ

1

Вы забыли THEN в вашей, если заявление. Вам нужно добавить THEN.

Как это:

IF @tempValue > 0 THEN ...your statement 
END IF; 

Вы также забыли добавить END IF; добавить это также.

Reference site is here.

+1

вы забыли о 'END IF;' добавьте крошечное информация в вашем ответить :) –

+0

также, вы можете грабить на мой комментарий на второй ответ? Я просто не хочу делать копии, спасибо! это о другом стиле –

+0

@GeloVolro Напоминаем. К тому же я дал ссылочный сайт. но снова спасибо. –

0

Вы забыли THEN и END IF;

IF @tempValue > 0 THEN 
     SELECT * FROM test.userdata_extended WHERE inn LIKE queryString; 
END IF; 
+0

Может ли быть doen с smth похожим на: SELECT IF (@tempValue> 0, *, "null") FROM test.userdata_extended WHERE inn LIKE queryString; ? –

+0

Что вы хотите достичь, вам нужны все 3 условия, если? – mirkobrankovic

+0

да, что-то похожее на то, что вы имели в виду, но теперь я думаю, что это плохая идея, не так ли? –

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