Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите плз разобраться с хранимой процедурой
 
 автор: HardCore_Solder   (14.05.2008 в 10:05)   письмо автору
 
 

Доброе утро)
имеем mysql v. 5.0.45
есть нехитрая процедурка:

CREATE DEFINER=`user`@`localhost` PROCEDURE `SaveKP`(IN poligonName TEXT, IN x_c int, IN y_c int, IN x_m int, IN y_m int)
BEGIN
    declare id_poligon, id_kp int;
    set id_poligon = -1;
    set id_kp = 0;

    select ID into id_poligon from Poligon where name = poligonName;
    Select id_poligon,id_kp;
    select COUNT(ID) into id_kp from KP where ID_Poligon = id_poligon;
    Select id_poligon,id_kp;
    if id_kp>0 then
        update KP Set x_cur = x_c, y_cur = y_c, x_map = x_m, y_map = y_m where ID_Poligon = id_poligon;
    else
        insert into KP(ID_Poligon, x_cur, y_cur, x_map, y_map) Values(id_poligon, x_c,y_c,x_m,y_m);
    end if;
END

суть ее в том, что она должна проверить, есть ли запись в таблице с таким-то ID, если есть, то произвести update, иначе - insert...
все вроде замечательно, если не одно НО.
пока в таблице KP нет записей запрос в процедуре "select COUNT(ID) into id_kp from KP where ID_Poligon = id_poligon;"
возвращает 0, как только записей становиться больше, то id_kp =1;

если все вручную делать, т.е.
select ID into id_poligon from Poligon where name = 'test2' (вернет 46)

select COUNT(ID) into id_kp from KP where ID_Poligon = 46 (вернет 0)

то получается все верно... а вот в процедуре фигня какая-то.
пробовал через
if exists (Select ID from KP where ID_Poligon = id_poligon)

тоже саме.
прошу Вашей помощи. спасибо

   
 
 автор: cheops   (14.05.2008 в 10:57)   письмо автору
 
   для: HardCore_Solder   (14.05.2008 в 10:05)
 

Не очень понятно, в чём проблема, что не так работает?

   
 
 автор: HardCore_Solder   (14.05.2008 в 11:13)   письмо автору
 
   для: cheops   (14.05.2008 в 10:57)
 

не верно записывается результат в перменную id_kp.
в процедуре, если количество записей в таблице KP больше 0, то id_kp будет равен всегда 1.
если смотреть вручную запросом, то возвращается значение 0.

я тут поколдовал немного и после изменении id_poligon на @id_poligon. процедура стала работать корректно...
в чем разница в вызове id_poligon и @id_poligon я так и не понял?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования