2013-02-02 47 views
0

我想寫一個MySQL函數,它返回一個用戶名是否在我的表中。它是以下內容:簡單的MySQL函數錯誤

CREATE FUNCTION UserExists (pUserName VARCHAR(40)) 
RETURNS BIT DETERMINISTIC 

BEGIN 

DECLARE rVal BIT; 

IF EXISTS (SELECT * FROM Users WHERE userName = pUserName) 
THEN SET rVal = 1; 
ELSE SET rVal = 0; 
END IF; 

RETURN rVal; 

END; 

但是,我收到一個錯誤。有任何想法嗎?

+0

你得到了什麼錯誤? –

+0

錯誤:您的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以便在第6行附近使用正確的語法。 – Sait

回答

1

如何使用用戶定義變量?

DELIMITER $$ 

CREATE FUNCTION UserExists (pUserName VARCHAR(40)) 
RETURNS BIT DETERMINISTIC 
BEGIN 

    DECLARE rVal BIT; 
    SET @recCount := (SELECT COUNT(*) FROM Users WHERE userName = pUserName); 
    IF @recCount > 0 THEN 
     SET rVal = 1; 
    ELSE 
     SET rVal = 0; 
    END IF; 
    RETURN rVal; 

END $$ 

DELIMITER ; 
+0

感謝您的回覆。然而,也沒有工作。錯誤:#1419 - 您沒有SUPER權限並啓用二進制日誌記錄(您*可能*想要使用安全性較低的log_bin_trust_function_creators變量) – Sait

+0

錯誤不是語法,而是因爲*可能*您沒有足夠的權限創建一個功能。 –

+0

我有一個共享的godaddy託管帳戶。任何想法來解決這個問題? – Sait

2

試試這個

IF(EXISTS(SELECT * FROM Users WHERE userName = pUserName)) 
0

在你查詢你的mysql數據庫,你需要使用的MySQL%須藤-u -p,然後給你的命令。