2011-07-30 21 views
4
ALTER function [dbo].[getEmployeeID](@ID int) returns table 
as 
    begin 
    return (
    select * from [dbo].[gtEmployeeName](2) 
    select * from Employees where EmployeeID = @ID) 
end 

ここで[dbo].[gtEmployeeName]は、私が呼び出しようとしている他の関数です。関数内で関数を呼び出せますか?

私はエラーが発生しましたか、電話するか、構文に問題がありますか?

メッセージ156、レベル15、状態1、プロシージャgetEmployeeID、6行目
キーワードの近くに不正な構文は、 '選択'。
メッセージ102、レベル15、状態1、プロシージャgetEmployeeID、行6
')'の近くに構文が正しくありません。

おかげ プリンス

答えて

6

に関連していますそれがあなたが必要とするものならば。またjoin conditionを更新(例はgtEmployeeNameから返されたテーブルには、列EmployeeIDを持っており、それが従業員に参加するために使用することができることを前提としています。

+0

gtEmployeeNameへのパラメータは、(2)ハードコードされている理由私も調べてお勧めしたいです。この値は何を表していますか(従業員IDは疑わしいですが、周辺情報が不足しています) –

3

はいあなたが関数内の関数を呼び出すことができます。

実際、関数内の現在の関数を呼び出してループを引き起こすことができます。

どのようなエラーが表示されますか? [dbo].[gtEmployeeName]リターンは、おそらくあなたはおそらく外側に参加

ALTER function [dbo].[getEmployeeID](@ID int) returns table 
as 
begin 
return (
    select * from [dbo].[gtEmployeeName](2) EN 
    inner join Employees E on EN.EmployeeID = E.EmployeeID 
    where [email protected]) 
end 

アップデートを探している

ALTER function [dbo].[getEmployeeID](@ID int) returns table 
as 
begin 
return (
    select *, [dbo].[gtEmployeeName](2) as EmpName from Employees where [email protected]) 
end 

[dbo].[gtEmployeeName]もし戻ってテーブルを探しているスカラー場合はあなたのエラーは、ほとんどの場合、何か他のもの

関連する問題