【发布时间】:2017-03-12 06:56:18
【问题描述】:
Employee表
编写一个 SQL 语句来改变下面提到的预先存在的存储过程以完成以下操作:
- 允许提供包含经理
Emp_ID的参数 - 使用提供的参数来限定查询中的
Emp_ID - 如果未提供参数值,则为参数分配零值
- 将结果语句重写为包含经理姓氏的
JOIN -
确保结果显示如下:
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
【问题讨论】:
-
乍一看,好像需要把
WHERE e.Emp_ID = 12345改成WHERE e.Emp_ID = @Emp_ID。 -
谢谢@AndrewMorton
标签: sql-server stored-procedures sqldatatypes