За последние 24 часа нас посетили 16442 программиста и 1560 роботов. Сейчас ищут 1962 программиста ...

хранимые процедуры

Тема в разделе "MySQL", создана пользователем lecas, 20 июн 2008.

  1. lecas

    lecas Активный пользователь

    С нами с:
    22 окт 2007
    Сообщения:
    32
    Симпатии:
    0
    [sql]CREATE PROCEDURE `my_proc`(OUT t INTEGER(11))
    NOT DETERMINISTIC
    SQL SECURITY INVOKER
    COMMENT ''
    BEGIN
    select id into 't' from `simpl` LIMIT 0,1;
    END;[/sql]
    что тут не правильно?
    почему то выдает ошибку #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6
     
  2. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    нафига это в хранимку?
     
  3. lecas

    lecas Активный пользователь

    С нами с:
    22 окт 2007
    Сообщения:
    32
    Симпатии:
    0
    на самом деле написать нужно будет кое что другое, проблема в том что на начальном этапе даже это не работает. может быть это потому что у меня denver ?
     
  4. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    mysql какой версии?

    p.s. посмотри в сторону продуктов EMS. Там есть замечательная для начала возможность - создаешь в конструкторе mysql - запрос, а затем преобразовываешь его в хранимую процедуру. и видишь код ее объявления
     
  5. lecas

    lecas Активный пользователь

    С нами с:
    22 окт 2007
    Сообщения:
    32
    Симпатии:
    0
    MySQL 5.0.45.

    а ты не мог бы по подробнее объяснить где что посмотреть.
    Просто не знаю что это за продукты EMS.
     
  6. angelo4ek

    angelo4ek Активный пользователь

    С нами с:
    27 авг 2006
    Сообщения:
    85
    Симпатии:
    0
    Имя продцедуры точно то что нужно?

    Попробуй написать LIMIT 1, что ли.
     
  7. lecas

    lecas Активный пользователь

    С нами с:
    22 окт 2007
    Сообщения:
    32
    Симпатии:
    0
    кстати если убрать строчку [sql]select id into 't' from `simpl` LIMIT 0,1;[/sql]
    то он создаёт процедуру.
    Как посмотреть список созданных функций, процедур?
     
  8. EugeneTM

    EugeneTM Активный пользователь

    С нами с:
    19 апр 2008
    Сообщения:
    85
    Симпатии:
    0
    Во первых где DELIMITER.
    Во вторых куда ты собрался результат отдавать? Если ты наивно думаешь , что OUT тебе поможет - зря.
    Если не в SQL скрипте в переменную.
    Мне почему то кажется , что забрать ты в клиента хочешь , ченить типа PHP.

    [sql]DELIMITER $$
    DROP PROCEDURE IF EXISTS `test`.`my_proc`$$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `test`.`my_proc`()
    BEGIN
    select id from `simpl` LIMIT 1;
    END$$
    DELIMITER ;[/sql]

    ХП , возвращает результат ТАКЖЕ как и обычный запрос.
    Только она может вернуть результаты нескольких запросов (имей multi_query).
    И юзать с ними надо MySQLi.
    И если у тебя в PHP скрипте будет больше одной ХП вызываться - делай зачистку.
    Иначе огребешся "out of sync" и будешь долго и больно ковыряться в поисках чего делать.
    http://habrahabr.ru/blog/webdev/37188.html
     
  9. lecas

    lecas Активный пользователь

    С нами с:
    22 окт 2007
    Сообщения:
    32
    Симпатии:
    0
    Спасибо большое за помощь