2014-05-16 36 views
0

我是新來的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) 

我怎麼可能會創建一個存儲過程,需要一個名稱和密碼,然後返回true,如果在至少有1條記錄的用戶名和密碼與參數1匹配。

一旦我看到存儲過程的語法,我應該可以創建自己的。我的需求是非常基本的。

回答

1

像這樣的事情

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 ;