SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 31.01.2013 03:41:12

Antarex
Участник
Зарегистрирован: 31.01.2013
Сообщений: 2

Не работает процедура

Добрый день. Впервые пишу процедуры, столкнулся с проблемой.

Имеется таблица 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'

Поправьте, пожалуйста, что я делаю не так. Возможно, неверный вызов процедуры, либо неверно написана процедура для выполнения данного запроса.

Неактивен

 

#2 31.01.2013 11:00:04

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Не работает процедура

Добрый день.

Ну, во-первых,  раз уж у Вас параметры процедуры имеют тип 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;
и должно полегчать.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 31.01.2013 21:48:48

Antarex
Участник
Зарегистрирован: 31.01.2013
Сообщений: 2

Re: Не работает процедура

Спасибо. Помогло.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson