52 / 52 / 18
Регистрация: 20.03.2015
Сообщений: 278
1

Хранимая процедура. Не переходит в ветку истина

28.09.2015, 22:48. Показов 470. Ответов 3
Метки нет (Все метки)

Приветствую,
расскажите пожалуйста почему так выполняется ХП,
в переменную user_count попадает 0,
но при этом в истину код не входит.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BEGIN
    SELECT CONCAT('Запрос пользователя');
    SELECT COUNT(*) AS user_count FROM users WHERE users.login = user_login;
    IF user_count = 0 THEN
        SELECT CONCAT('Пользователя не существует');
        SELECT CONCAT('Запрос организации');
        SELECT  COUNT(*) AS org_count FROM organiz WHERE organiz.name = org_name;
        IF org_count = 0 THEN
            SELECT CONCAT('Организации не существует');
            INSERT INTO users (login, password) VALUES (user_login, user_password);
            SELECT LAST_INSERT_ID() AS user_id;
            INSERT INTO organiz (name) VALUES (org_name);
            SELECT LAST_INSERT_ID() AS org_id;
        END IF;
    END IF;
END
пользуюсь phpmyadmin? вот что он мне отвечает.
Хранимая процедура. Не переходит в ветку истина
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2015, 22:48
Ответы с готовыми решениями:

хранимая процедура
Есть таблица TEACHER с полями TEACHER, TEACHER_NAME и PULPIT Нужно создать хранимую процедуру,...

хранимая процедура
как результат хранимой процедуры вывести в поле таблицы?

хранимая процедура
Всем привет. Есть 2 таблицы - дороги и мосты. create table road (idroad number NOT NULL...

Хранимая процедура
всем привет! при написании хранимой процедуры возникло несколько вопросов такое присвоение не...

3
52 / 52 / 18
Регистрация: 20.03.2015
Сообщений: 278
29.09.2015, 10:56  [ТС] 2
Ну хоть намекните почему условие не возвращает истину
0
52 / 52 / 18
Регистрация: 20.03.2015
Сообщений: 278
29.09.2015, 11:02  [ТС] 3
подумал, может что то с типами не то, попробовал сделать вот так (вторая строка)
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
BEGIN
    DECLARE user_count INT(15);
    SELECT CONCAT('Запрос пользователя');
    SELECT COUNT(*) AS user_count FROM users WHERE users.login = user_login;
    IF user_count = 0 THEN
        SELECT CONCAT('Пользователя не существует');
        SELECT CONCAT('Запрос организации');
        SELECT  COUNT(*) AS org_count FROM organiz WHERE organiz.name = org_name;
        IF org_count = 0 THEN
            SELECT CONCAT('Организации не существует');
            INSERT INTO users (login, password) VALUES (user_login, user_password);
            SELECT LAST_INSERT_ID() AS user_id;
            INSERT INTO organiz (name) VALUES (org_name);
            SELECT LAST_INSERT_ID() AS org_id;
        END IF;
    END IF;
END
получил на выходе чуть больше информации, но все же непонятно почему не работает
Хранимая процедура. Не переходит в ветку истина
0
52 / 52 / 18
Регистрация: 20.03.2015
Сообщений: 278
29.09.2015, 12:22  [ТС] 4
все ребят, додумался сам, вот рабочий вариант
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
BEGIN
    DECLARE user_count,org_count INT(15);
    SELECT COUNT(*) INTO user_count FROM users WHERE users.login = user_login;
    IF (user_count = 0) THEN
        SELECT  COUNT(*) INTO org_count FROM organiz WHERE organiz.name = org_name;
        IF org_count = 0 THEN
            INSERT INTO users (login, password) VALUES (user_login, user_password);
            SELECT LAST_INSERT_ID() AS user_id;
            INSERT INTO organiz (name) VALUES (org_name);
            SELECT LAST_INSERT_ID() AS org_id;
        END IF;
    END IF;
END
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2015, 12:22

Хранимая процедура
Помогите пожалуйста написать хранимую процедуру подсчитывающую количество товаров в...

Хранимая процедура
Добрый день! Написал хранимую процедуру, но выдает ошибку "#1064 - You have an error in your SQL...

Хранимая процедура
Помогите пожалуйста разобраться, срочно нужно. Я написала хранимую процедуру в oracle. Эта...

Хранимая процедура
Есть функция, возвращающая табличное значение (содержит всего один столбец DATETIME NULL). В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru