我们可以在函数SQL Server 2005中调用函数

时间:2011-07-30 18:55:11

标签: sql-server-2005

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行
  关键字“select”附近的语法不正确。
  消息102,级别15,状态1,过程getEmployeeID,行6   ')'附近的语法不正确。

由于 王子

2 个答案:

答案 0 :(得分:6)

如果[dbo].[gtEmployeeName]返回标量,您可能正在寻找

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

如果[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 EmployeeID=@ID)
end

如果您需要,请将连接更新为外部。同时更新join condition(该示例假定gtEmployeeName返回的表具有列EmployeeID,并且可用于加入Employees。

答案 1 :(得分:3)

是的,您可以在函数内调用函数。

实际上,你可以在函数内部调用当前函数,以产生循环。

你得到什么错误?您的错误很可能与其他内容有关