2016-11-07 77 views
1

我有这个功能(MS SQL服务器):无法调用表值函数

CREATE FUNCTION dbo.activeEmpGivenCity(@city nvarchar(50)) 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT Emp_First_Name 
    FROM Employee_Details AS e 
    INNER JOIN City AS c ON e.Emp_City_Id = c.City_Id 
    WHERE @city = City_Name AND Emp_Active = 1 
); 

我打电话的功能,例如:

SELECT * from [dbo].[activeEmpGivenCity]('a'); 

我收到此错误:

Msg 4121, Level 16, State 1, Line 223 
Cannot find either column "dbo" or the user-defined function or aggregate  
"dbo.activeEmpGivenCity", or the name is ambiguous. 

此外,当我将鼠标悬停在函数调用上时,它说:

Invalid object name 'dbo.activeEmpGivenCity'. 

我知道该函数存在,它显然是在我的数据库中。

我看了这个网站:http://www.sqlservercurry.com/2014/03/user-defined-functions-in-sql-server_20.html

和AM调用表值函数正是他/她是做它的方式。 发生了什么,我该如何解决?

+0

对不起球员,对于有些理由现在正在工作。 –

+1

很高兴你已经自己修复,也许你可以在这里发布你的答案,或者只是删除这篇文章,谢谢。 – Prisoner

回答

0

可能是你正在试图打电话给你的功能在其他数据库

如下更改功能:

注:执行以下功能相对数据库

CREATE FUNCTION dbo.activeEmpGivenCity(@city nvarchar(50)) 
RETURNS TABLE 
AS 
RETURN 
(
    SELECT e.Emp_First_Name 
    FROM Employee_Details AS e 
    INNER JOIN City AS c ON e.Emp_City_Id = c.City_Id 
    WHERE @city = c.City_Name AND e.Emp_Active = 1 
); 
+0

显然'别名'这个名字在这里不是问题。 –