2011-11-13 1 views
-1

私は何かを働いており、それを働かせることができません。 Employee_Nameという名前のユーザー定義関数を作成しようとしています。従業員IDをパラメータとして渡します。ユーザー定義関数に渡されたIDと一致するIDを持つ従業員の名字、姓、電話番号を返します。この関数を使用するクエリを作成し、IDを持つ従業員の情報を返しますしかし、機能の従業員の名前を完了するために、私はそれを働かせることはできません。それがどこに行くユーザー定義の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のwouldntの私がそう選択するには、最初の名前、姓と電話でリターンを得るために:

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のIdは、私は、カウントを使用するか、または= 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 Employees 
WHERE EmployeeId = ... 

Select 
FirstName, 
LastName, 
PhoneNumber 
From 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 
関連する問題