我正在做一件事,我无法让它发挥作用。我正在尝试创建一个名为Employee_Name的用户定义函数。将Employee Id作为参数传递。返回其ID与传递给用户定义函数的id匹配的员工的名字,姓氏和电话号码。创建使用该函数的查询并返回具有id的员工的信息但是为了完成功能员工的名字,我无法让它发挥作用。我一直收到这个错误:
Msg 207, Level 16, State 1, Procedure Employee_Name, Line 10
Invalid column name 'Employee_Name'.
Msg 208, Level 16, State 1, Line 2
Invalid object name 'Employee_name'.
代码如下所示:
CREATE FUNCTION Employee_Name
(
@EmployeeID int
)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM Employees
WHERE Employee_Name = @EmployeeId
)
GO
SELECT * FROM Employee_name (1)
现在要获得返回名字,姓氏和电话,我不会选择员工ID,就像这样
Select
FirstName,
LastName,
PhoneNumber
From EmployeeId
或类似的东西。现在让我的员工和Id为5我会使用计数或做一些= 5的事情;我不确定仍然困惑。
编辑:这是我再次拥有的:
CREATE FUNCTION Employee_Name
(
@EmployeeID int
)
RETURNS TABLE
AS
RETURN
(
SELECT FirstName,LastName,HomePhone
FROM Employees
WHERE Employee_Name = @EmployeeId
)
GO
答案 0 :(得分:1)
WHERE Employee_Name = @EmployeeId <<<-
应该是
WHERE Employee_Id = @EmployeeId
? (或任何您的Id列的名称)。
答案 1 :(得分:1)
这可能是因为函数与列名相同。
试试这个:
SELECT * FROM Employees
WHERE Employees.Employee_Name = @EmployeeId
或者更确切地说
SELECT * FROM Employees
WHERE Employees.EmployeeId = @EmployeeId
答案 2 :(得分:0)
这一行:
WHERE Employee_Name = @EmployeeId
没有意义。当然你的意思是
WHERE Employees.EmployeeId = @EmployeeId
这个查询:
Select
FirstName,
LastName,
PhoneNumber
From EmployeeId
肯定是这样的:
SELECT FirstName,
LastName,
PhoneNumber
FROM Employees
WHERE EmployeeId = ...