Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Впервые пишу процедуры, столкнулся с проблемой.
Имеется таблица customers, содержащая столбцы login и pass.
Строка этой таблицы содержит значения login = test, pass = 12345.
Запрос
mysql>SELECT * FROM customers WHERE login="test" and pass="12345";
выполняется без ошибки и выводит таблицу:
+--------+------+------+
| id_cust | login | pass |
+--------+-----+-------+
| 1 | test | 12345 |
+--------+-----+-------+
Создаю процедуру:
DELIMITER ;;
DROP PROCEDURE IF EXISTS auth;;
CREATE PROCEDURE auth (IN clogin VARCHAR(10), IN cpass VARCHAR(10))
BEGIN
SELECT * FROM customers WHERE login="clogin" AND pass="cpass";
END ;;
DELIMITER ;
И пытаюсь вызвать:
mysql> call auth (test, 12345);
в ответ:
ERROR 1054 (42S22): Unknown column 'test' in 'field list'
Поправьте, пожалуйста, что я делаю не так. Возможно, неверный вызов процедуры, либо неверно написана процедура для выполнения данного запроса.
Неактивен
Добрый день.
Ну, во-первых, раз уж у Вас параметры процедуры имеют тип varchar, то значит туда и надо их как строки передавать.
То есть не
mysql> call auth (test, 12345);
а
mysql> call auth ('test', '12345');
Во-вторых, в запросе в теле процедуры двойные кавычки зачем поставлены?
Исправьте
SELECT * FROM customers WHERE login="clogin" AND pass="cpass";
на
SELECT * FROM customers WHERE login=clogin AND pass=cpass;
и должно полегчать.
Неактивен
Спасибо. Помогло.
Неактивен