2011-11-13 27 views
-1

我正在工作一件事,我无法让它工作。我正在尝试创建一个名为Employee_Name的用户定义函数。传递一个员工ID作为参数。返回ID与传递给用户定义函数的ID相匹配的员工的名字,姓氏和电话号码。创建一个使用该函数的查询,并为该员工返回一个ID 5.但为了完成功能员工的名字,我不能让它工作。哪里就有奇迹用户定义的SQL函数给出错误“列名'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选择:我不断收到此错误:

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'. 

的代码看起来是这样的这样

Select 
FirstName, 
LastName, 
PhoneNumber 
From EmployeeId 

或者类似的东西that.Now让员工与和5标识,我会用计数或做一些事情,有一个= 5;我不确定仍然困惑。

编辑:这是我再次:

CREATE FUNCTION Employee_Name 
(
    @EmployeeID int 
) 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT FirstName,LastName,HomePhone 
    FROM Employees 
    WHERE Employee_Name = @EmployeeId 
) 
GO 
+0

哪个SQL实现您使用? – abcde123483

回答

0

这条线:

WHERE Employee_Name = @EmployeeId 

没有意义。当然你的意思是像

WHERE Employees.EmployeeId = @EmployeeId 

而这个查询:

Select 
FirstName, 
LastName, 
PhoneNumber 
From EmployeeId 

肯定应该是这样的:

SELECT FirstName, 
     LastName, 
     PhoneNumber 
    FROM Employees 
WHERE EmployeeId = ... 

+0

是的,我确实用select语句解决了这个问题。 – norris1023

1
WHERE Employee_Name = @EmployeeId <<<- 

应该说是

WHERE Employee_Id = @EmployeeId 

? (或任何您的Id列被命名)。

1

这可能是因为函数与列的名称相同。

试试这个:

SELECT * FROM Employees 
WHERE Employees.Employee_Name = @EmployeeId 

或者说

SELECT * FROM Employees 
WHERE Employees.EmployeeId = @EmployeeId 
相关问题