2017-04-03 48 views
1
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS; 

DELIMITER // 

CREATE PROCEDURE STUDENTS_BY_STATUS(status VARCHAR(10)) 

BEGIN 

    SELECT BannerId, Name FROM STUDENT WHERE Status=status; 

END // 

DELIMITER ; 

CALL STUDENTS_BY_STATUS("Freshman"); 

我的表(學生) enter image description here爲什麼我的SQL過程返回整個表?

我的結果

enter image description here

回答

3

調用其他一些名字您的參數你有你的表名爲狀態欄。

我通常遵循p_前綴參數和v_局部變量的約定。

CREATE PROCEDURE STUDENTS_BY_STATUS(p_status VARCHAR(10)) 
BEGIN  
    SELECT BannerId, Name FROM STUDENT WHERE Status = p_status; 
END // 
+0

謝謝!我不太清楚爲什麼我的教授要求我們將參數作爲狀態,即使他必須知道這種衝突。 –

+0

@KyleJ - 可能是他在測試你。 ;) – GurV

2
DROP PROCEDURE IF EXISTS STUDENTS_BY_STATUS; 

DELIMITER // 

CREATE PROCEDURE STUDENTS_BY_STATUS(IN statusIn VARCHAR(10)) 

BEGIN 

    SELECT BannerId, Name FROM STUDENT WHERE Status=statusIn; 

END // 

DELIMITER ; 

將其標記爲在參數和PARAM使用不同勢名字。

+1

它默認爲'IN'。沒有必要明確指定它 – GurV

相關問題