2016-10-29 7 views
0

EmployeeテーブルSQL Serverの:パラメータ

Employee Table

を受け入れるために、ストアドプロシージャを変更し、以下を達成するには、以下のような既存のストアドプロシージャを変更するであろうSQL文を書く:

  • マネージャーを含むパラメータを入力できるようにするEmp_ID
  • 付属のパラメータを使用してEmp_IDをqu何のパラメータ値が次のよう
  • 結果が表示されていることを確認マネージャーの姓を含んJOINとして結果文を書き換える

  • を供給されていない場合ERY
  • は、パラメータにゼロの値を割り当てる:

    Manager's Last Name 
    Employee's Last Name 
    Employees Hire Date 
    
  • 順マネージャーの姓によってクエリの結果、最近の雇用と従業員の姓

これは、既存のストアドプロシージャのコードです:

CREATE PROCEDURE dbo.sp_GetEmployeeNm 
AS 
    SELECT 
     Last_Nm, Hire_Dt 
    FROM 
     dbo.Employee 
    WHERE 
     Mgr_ID IN (SELECT Emp_ID 
        FROM dbo.Employee 
        WHERE Emp_ID = 12345) 

が正しく、このストアドプロシージャを変更する方法を知っている人はいますか?

これは私が試したものです:

ALTER PROCEDURE dbo.sp_GetEmployeeNm (@Emp_ID INT = 0) 
AS 
BEGIN 
    SELECT 
     m.Last_Nm AS Manager's Last Name, 
     e.Last_Nm AS Employee's Last Name, 
     e.Hire_Dt AS Employee's Hire Date 
    FROM 
     Employee e 
    INNER JOIN 
     Employee m ON e.Emp_ID = m.Mgr_ID 
    WHERE 
     e.Emp_ID = 12345 
    ORDER BY 
     (m.Last_Nm, e.Hire_Dt, e.Last_Nm) DESC 
END 
+0

一見あなたはWHERE e.Emp_ID = 12345' WHERE 'に'変更する必要があるように、それが見えますe.Emp_ID = @ Emp_ID'。 –

+0

ありがとう@AndrewMorton – Koda

答えて

2
ALTER PROCEDURE dbo.sp_GetEmployeeNm 
    @Emp_ID INT = 0 
AS 
BEGIN 
    SELECT 
     m.Last_Nm AS Manager's Last Name, 
     e.Last_Nm AS Employee's Last Name, 
     e.Hire_Dt AS Employee's Hire Date 
    FROM 
     Employee e 
    INNER JOIN 
     Employee m ON e.Emp_ID = m.Mgr_ID 
    WHERE 
     e.Emp_ID = @Emp_ID 
    ORDER BY 
     (m.Last_Nm, e.Hire_Dt, e.Last_Nm) DESC 
END 
GO 

使用

EXEC dbo.sp_GetEmployeeNm 12345 
+0

そして、それらの列エイリアスを二重引用符で囲む必要があります! 'm.Last_Nm AS"マネージャの姓 "、....' –

関連する問題