SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.07.2012 07:55:18

Amega686
Участник
Зарегистрирован: 18.07.2012
Сообщений: 5

Помогите с процедурой (IF NOT EXISTS)

Код:

CREATE PROCEDURE temp_sp ()
IF NOT EXISTS (SELECT *
FROM
  information_schema.COLUMNS
WHERE
  TABLE_NAME = 'Counter_Sctp'
  AND COLUMN_NAME = 'pmSctpInErrors')
BEGIN
ALTER TABLE Counter_Sctp ADD pmSctpInErrors INT
END IF;
END;
DELIMITER ;
CALL temp_sp();
DROP PROCEDURE temp_sp;

Подскажите, где ошибка?

Неактивен

 

#2 18.07.2012 22:30:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите с процедурой (IF NOT EXISTS)

Неправильный синтаксис
http://dev.mysql.com/doc/refman/5.5/en/ … edure.html
IF NOT EXISTS это ключевое слово для операторов create table, create database.

Для проверки пустой ли результат выборки нужно использовать
http://dev.mysql.com/doc/refman/5.5/en/ … ition.html
http://dev.mysql.com/doc/refman/5.5/en/ … ndler.html

P.S. Делать select * плохой тон. В данном случае достаточно count(*)

Неактивен

 

#3 19.07.2012 05:54:51

Amega686
Участник
Зарегистрирован: 18.07.2012
Сообщений: 5

Re: Помогите с процедурой (IF NOT EXISTS)

Спасибо)

Неактивен

 

#4 26.07.2012 11:27:25

Amega686
Участник
Зарегистрирован: 18.07.2012
Сообщений: 5

Re: Помогите с процедурой (IF NOT EXISTS)

Да как эту процедуру написать???
Надо проверить на наличие поля и добавить при его отсутствии!!!
Процедуру делать даже не надо, это я намудрил.
Про CONDITION и HANDLER ничего не понял, сам знаю только ddl(
Пробовал так, но не вышло...


Код:

DELIMITER $$

DROP PROCEDURE IF EXISTS `sp_test`$$

CREATE PROCEDURE `sp_test`(IN Number INT)
READS SQL DATA
BEGIN

IF ((SELECT Count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'test' AND COLUMN_NAME = 'pmSctpInErrors') < 1) Then
ALTER TABLE test ADD pmSctpInErrors INT NULL;
END IF;

END$$
DELIMITER;

Отредактированно Amega686 (26.07.2012 11:46:43)

Неактивен

 

#5 27.07.2012 08:52:21

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Помогите с процедурой (IF NOT EXISTS)

Почему не вышло? Вполне рабочий код, неясно только лишь зачем вы делаете у этой процедуры входной параметр (IN Number INT) ?
Т.е. вызывать её нужно как

call sp_test(2);  -- вместо 2 можно указать любое число.

Неактивен

 

#6 27.07.2012 10:57:14

Amega686
Участник
Зарегистрирован: 18.07.2012
Сообщений: 5

Re: Помогите с процедурой (IF NOT EXISTS)

vasya написал:

зачем вы делаете у этой процедуры входной параметр (IN Number INT) ?

Это я коряво спёр откуда-то)
Процедура создаётся, но при выполнении выдаёт окно: "Function NAME does not exist"

Неактивен

 

#7 27.07.2012 10:59:33

Amega686
Участник
Зарегистрирован: 18.07.2012
Сообщений: 5

Re: Помогите с процедурой (IF NOT EXISTS)

Урааааааа!!! Заработало! спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson