2016-10-29 2 views
0

Employee TabelleSQL Server: gespeicherte Prozedur ändern, um Parameter zu akzeptieren

Employee Table

eine SQL-Anweisung schreiben, die die unten genannten vorbestehenden gespeicherte Prozedur ändern würde folgendes zu erreichen:

  • Zulassen, dass ein Parameter geliefert wird, der einen Manager enthält Emp_ID
  • Verwenden Sie den angegebenen Parameter, um die Emp_ID im Qu zu qualifizieren ery
  • dem Parameter einen Wert von Null zugewiesen werden, wenn kein Parameterwert
  • geliefert wird, um das Ergebnis Anweisung als JOIN
  • umschreiben, dass die
  • Nachnamen Manager enthält
  • sicherzustellen, dass die Ergebnisse sind wie folgt angezeigt:

    Manager's Last Name 
    Employee's Last Name 
    Employees Hire Date 
    
  • um die Ergebnisse der Abfrage durch den Nachnamen des Managers, die neuesten Mitarbeiter und den Nachnamen des Mitarbeiters

Dies ist der bereits bestehende Code der gespeicherten Prozedur:

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) 

Gibt es jemanden, der weiß, wie man richtig diese gespeicherte Prozedur ALTER?

Dies ist, was ich versucht:

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

Auf den ersten Blick sieht es aus wie Sie ändern müssen WHERE e.emp_id = 12345' zu WHERE e.Emp_ID = @ Emp_ID'. –

+0

Dank @AndrewMorton – Koda

Antwort

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 

Verwenden

EXEC dbo.sp_GetEmployeeNm 12345 
+0

Und Sie müssen diese Spalte Aliase in Anführungszeichen setzen !! 'm.Last_Nm AS" Nachname des Managers ", ....' –

Verwandte Themen