[adsense id=”0514458240″ width=”468″ height=”60″]
This post provides sample code of a stored procedure that includes an OUT parameter. The basic concept is something to validate a username and password combination. A better way of doing this would be to write a stored function which returns a TINYINT or BIT to indicate success or failure.
DROP TABLE IF EXISTS logins; CREATE TABLE logins ( id INT AUTO_INCREMENT, username VARCHAR(100), PASSWORD VARCHAR(100), PRIMARY KEY (id) ); INSERT INTO logins (username, PASSWORD) VALUES ('test', 'test123'); DROP PROCEDURE IF EXISTS pValidate; DELIMITER $$ CREATE PROCEDURE pValidate(IN pUsername VARCHAR(100), IN pPassword VARCHAR(100), OUT pResult VARCHAR(100)) BEGIN DECLARE count INT; SELECT count(1) INTO count FROM logins WHERE username = pUsername AND password = pPassword; IF count > 0 THEN SET pResult = 'success'; ELSE SET pResult = 'failed'; END IF; END; $$ DELIMITER ; SET @s = ""; CALL pValidate('test','test321', @s); SELECT @s; CALL pValidate('test','test123', @s); SELECT @s;
The result of this code is:
mysql> source proc.sql Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.04 sec) Query OK, 1 row affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) +--------+ | @s | +--------+ | failed | +--------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec) +---------+ | @s | +---------+ | success | +---------+ 1 row in set (0.00 sec)
One response to “MySQL – Stored procedures with OUT parameters”
[…] a problem if the username does not exist. I have put together a mini-tutorial which can be found here. The better approach is to use a SELECT count(*) INTO variable. In this case you can compare both […]