2014-02-12 51 views
0

我應該創建一個接受作業代碼作爲參數的過程,並列出具有該作業代碼的所有僱員的全名和僱用日期。如果作業代碼無效,則顯示消息。創建了以下存儲過程,但我不清楚IF語句將在哪裏提示用戶使用了錯誤的數字。其次,我應該硬編碼唯一可接受的參數嗎?所以@job_num = 500,@ job_num = 501 ...等等。在SQL存儲過程中創建錯誤消息

CREATE PROCEDURE getEmpInfo (@job_num = 500 
          @job_num = 501 
          @job_num = 502 
          @job_num = 503) //these would go to 510 

//IF @job_code is not between 500 & 510 
    PRINT 'Incorrect Job Code. Please Enter another number.' 

AS 
BEGIN 
    SELECT EMPLOYEE.EMP_LNAME, EMPLOYEE.EMP_FNAME, EMPLOYEE.EMP_HIREDATE, JOB.JOB_CODE 
    FROM JOB JOIN ON EMPLOYEE.JOB_CODE = JOB.JOB_CODE 
    WHERE JOB_CODE = @job_code 
END 

對初學者問題表示歉意,但它是有趣的學習。

+0

理想情況下,您應該將該邏輯放入您的應用程序中。 –

回答

0

如果傳遞的參數未驗證,則可以使用RAISERROR函數。隨着RETURN關鍵詞。這將停止執行並退出代碼。像這樣的東西....

CREATE PROCEDURE getEmpInfo 
@job_code INT 
AS 
BEGIN 
SET NOCOUNT ON; 

    IF (@job_code < 500 OR @job_code > 510) 
    BEGIN 
     RAISERROR('Incorrect Job Code. Please Enter another number.', 16,1) 
     RETURN 
    END 

SELECT EMPLOYEE.EMP_LNAME 
     , EMPLOYEE.EMP_FNAME 
     , EMPLOYEE.EMP_HIREDATE 
     , JOB.JOB_CODE 
FROM JOB INNER JOIN EMPLOYEE 
ON  JOB.JOB_CODE = EMPLOYEE.JOB_CODE 
WHERE JOB.JOB_CODE = @job_code --<-- guessing here you decide 

END 

read here for correct Sql Server JOINS Syntax,您的連接語法也是錯誤的。