用户定义的SQL函数提供错误“无效的列名'Employee_Name'。”

时间:2011-11-13 14:41:30

标签: sql

我正在做一件事,我无法让它发挥作用。我正在尝试创建一个名为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

3 个答案:

答案 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 = ...