...
DECLARE cur_letter CHAR;
DECLARE pid INT;
DECLARE cur_id INT;
SET pid = 10;
SET cur_letter = 'a';
...
SELECT `id` INTO cur_id FROM `table_name` WHERE `parent_id` = pid AND `letter` = cur_letter;
...
сие не работает (видимо проблемы с синтаксисом - хранимку как отлаживать - понятия не имею).
если сделать так:
...
DECLARE cur_letter CHAR;
DECLARE pid INT;
DECLARE cur_id INT;
SET pid = 10;
SET cur_letter = 'a';
...
SELECT `id` INTO cur_id FROM `table_name` WHERE `parent_id` = pid;
...
то процедура срабатывает. значит дело в куске AND `letter` = cur_letter;
в чем может быть проблема? символьную переменную надо чтоли в селекте как-то еще оборачивать?
Спустя 8 минут, 4 секунды (3.06.2012 - 20:05) Dezigo написал(а):
DECLARE cur_letter CHAR;
Вы зыбили поставить
DECLARE @cur_letter CHAR;
@
Вы зыбили поставить
DECLARE @cur_letter CHAR;
@
SET @var := 1
SELECT @var2 := 2
Спустя 5 минут, 14 секунд (3.06.2012 - 20:10) redreem написал(а):
DECLARE @cur_letter CHAR;
выдает ошибку при объявлении процедуры:
Цитата |
#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 '@cur_letter CHAR; |
Спустя 1 минута, 36 секунд (3.06.2012 - 20:12) redreem написал(а):
и кстати зачем? ведь например с pid, объявленной так же в локальной области видимости процедуры - проблемы нету!
Спустя 32 минуты, 9 секунд (3.06.2012 - 20:44) vital написал(а):
WHERE `parent_id` = :pid AND `letter` = :cur_letter;
а так?
Еще не плохо бы уазать в какой бд это происходит.
T-SQL? PL/SQL ?
а так?
Еще не плохо бы уазать в какой бд это происходит.
T-SQL? PL/SQL ?
Спустя 7 минут, 8 секунд (3.06.2012 - 20:51) Dezigo написал(а):
А ну, если mysql, то как ты написал должно все работать.
Не вижу ошибки.
Не вижу ошибки.
Спустя 10 минут, 40 секунд (3.06.2012 - 21:01) redreem написал(а):
MySQL
c :cur_letter; выдает ошибку.
c :cur_letter; выдает ошибку.
Цитата |
А ну, если mysql, то как ты написал должно все работать. |
синтаксических ошибок при объявлении процедуры нет, но и SELECT возвращает "ничего".
Спустя 10 минут, 59 секунд (3.06.2012 - 21:12) Игорь_Vasinsky написал(а):
так ты говоришь - что при использовании системеых переменных (@) - ошибка? это подобие констант со своей "глобальной областью видимостью"... странно
вот почитай
http://ruseller.com/lessons.php?rub=28&id=1189
http://www.internet-technologies.ru/articl...ticle_1318.html
вот почитай
http://ruseller.com/lessons.php?rub=28&id=1189
http://www.internet-technologies.ru/articl...ticle_1318.html
Спустя 1 час, 43 минуты, 1 секунда (3.06.2012 - 22:55) redreem написал(а):
вопрос решен. незнай че было, но "вдруг" заработало, хотя по теме топика ниче не изменилось. возможно проблема была в том, что я в одной базе использю таблицы в разных кодировках (так надо) и для тестовой таблицы и вносил записи вручную. а вот когда занес туда данные этой же самой процедурой - то все заработало. видимо вручную не втой кодирове символ попадал вот и глючило. всем спасибо.
Спустя 10 часов, 57 минут, 56 секунд (4.06.2012 - 09:53) redreem написал(а):
другой вопрос по той же теме:
делаю так:
работает.
а вот так:
неработает. в чем прикол?
или может вопрос поставить подругому:
как мне проверить: есть ли выборка или нет в запросе
в примере выше только для этого и прикручен COUNT(*).
COUNT(letter_id) - сработает?
хотя вопрос, почему 2 выборки сразцу в селекте не срабатывают - тоже волнует.
Среда: MySQL, хранимки.
UPD: COUNT(letter_id) - проверил - неработает.
делаю так:
...
SELECT COUNT(*) INTO count_lid FROM `lexx_dict_ru` WHERE `parent_id` = pid AND `letter` = put_letter;
IF count_lid > 0 THEN
SELECT `id` INTO letter_id FROM `lexx_dict_ru` WHERE `parent_id` = pid AND `letter` = put_letter;
...
работает.
а вот так:
...
SELECT COUNT(*), `id` INTO count_lid, letter_id FROM `lexx_dict_ru` WHERE `parent_id` = pid AND `letter` = put_letter;
IF count_lid > 0 THEN
...
неработает. в чем прикол?
или может вопрос поставить подругому:
как мне проверить: есть ли выборка или нет в запросе
SELECT `id` INTO letter_id FROM `lexx_dict_ru` WHERE `parent_id` = pid AND `letter` = put_letter;
в примере выше только для этого и прикручен COUNT(*).
COUNT(letter_id) - сработает?
хотя вопрос, почему 2 выборки сразцу в селекте не срабатывают - тоже волнует.
Среда: MySQL, хранимки.
UPD: COUNT(letter_id) - проверил - неработает.
Спустя 6 часов, 38 минут, 44 секунды (4.06.2012 - 16:32) redreem написал(а):
up. актуально.
Спустя 4 часа, 32 минуты, 39 секунд (4.06.2012 - 21:05) Игорь_Vasinsky написал(а):
разве в таком порядке используют COUNT() ? там же вроде тоже правило, как в функциях со значением аргумента по умолчанию.
т.е. попробуй так
т.е. попробуй так
SELECT `id`, COUNT(*) INTO count_lid, letter_id FROM `lexx_dict_ru` WHERE `parent_id` = pid AND `letter` = put_letter;
Спустя 22 минуты, 5 секунд (4.06.2012 - 21:27) redreem написал(а):
Игорь_Vasinsky
неработает
неработает

Спустя 56 минут, 23 секунды (4.06.2012 - 22:23) Игорь_Vasinsky написал(а):
Спустя 3 минуты, 7 секунд (4.06.2012 - 22:26) redreem написал(а):
Игорь_Vasinsky
да я не получаю еррор. хранимка же исполняется. просто она ниче не возвращает, хотя должна (должна вернуть в любом случае, хотябы даже дефолтные значения, которые инициализируются ДО работы логики). поэтому и сужу что "неработает". раз не возвращает, значит тупо не доходит до выдачи - прерывается изза ошибки.
UPD: покурю завтра твою ссылку. седня ужо аут.
да я не получаю еррор. хранимка же исполняется. просто она ниче не возвращает, хотя должна (должна вернуть в любом случае, хотябы даже дефолтные значения, которые инициализируются ДО работы логики). поэтому и сужу что "неработает". раз не возвращает, значит тупо не доходит до выдачи - прерывается изза ошибки.
UPD: покурю завтра твою ссылку. седня ужо аут.
Спустя 3 минуты, 46 секунд (4.06.2012 - 22:30) Игорь_Vasinsky написал(а):
лан. просто я помню ты говорил что не умеешь отлаживать процедуры.

Спустя 13 часов, 42 минуты, 29 секунд (5.06.2012 - 12:13) redreem написал(а):
Игорь_Vasinsky
ну да. с хранимками мало работал. можно сказать только осваиваю. в плане отладки - тупо черный ящик. может есть логи какие-нить гденить, в которые пишутся ошибки, не?
ну да. с хранимками мало работал. можно сказать только осваиваю. в плане отладки - тупо черный ящик. может есть логи какие-нить гденить, в которые пишутся ошибки, не?