存储过程返回一个布尔值?

时间:2014-05-16 13:23:24

标签: mysql sql stored-procedures

我是SQL新手,但我正在努力减少代码重复。我正在开发一款游戏,其服务器将使用MySQL C ++连接器。我还将托管一个访问同一数据库的网站。他们都需要对用户进行身份验证。理想情况下,我想编写一个包含用户名和哈希值的存储过程,如果名称/密码匹配则返回一个布尔值。

我在撰写查询方面并不算太糟糕,但存储过程是新的领域。

有人可以使用像这样的虚拟表给我一个简单的MySQL存储过程示例:

Table Player
Column PlayerID (int, primary key, not null, auto increment)
Column PlayerUsername (varchar 25, not null)
Column PlayerPassword (varchar 25, not null)

如何创建一个包含名称和密码的存储过程,如果至少有1条记录,其中用户名和密码与参数1匹配,则返回true。

一旦我看到存储过程的语法,我应该能够创建自己的语法。我的需求非常基本。

1 个答案:

答案 0 :(得分:2)

像这样的东西

DELIMITER //

DROP FUNCTION IF EXISTS MY_FUNCTION//

create function MY_FUNCTION(name varchar(255) CHARACTER SET utf8, 
                            pwd varchar(255) CHARACTER SET utf8, )
RETURNS tinyint(1)
READS SQL DATA SQL SECURITY INVOKER
BEGIN
    declare result tinyint(1);

    SELECT if(count(*)>0,1,0) INTO result 
    FROM users
    WHERE users.name=name and users.pwd=pwd;

    RETURN result;
END//

DELIMITER ;