从SchemaB SQL Server中定义的视图中调用schemaA中定义的用户定义函数

时间:2017-07-05 07:20:42

标签: sql sql-server database

我从查看中调用函数时遇到问题。它们都是不同的模式,所以我有这样的东西:

View [SchemaA].[ViewName]
    WITH SCHEMABINDING
    AS
        SELECT DISTINCT
             [SchemaB].[functionName](value) as 'variable'
        FROM
            //Several selects with joins

问题是我收到此错误:“无法架构绑定视图'SchemaA.view'。'SchemaB.functionName'不是架构绑定。”

我还尝试在对函数的调用中包含数据库名称,如下所示:

[database].[SchemaB].[functionName]

但它仍然无效。但是它返回了一个不同的错误:“无法模式绑定视图'SchemaA.view',因为名称'SchemaB.functionName'对于模式绑定无效。名称必须是两部分格式,并且对象不能引用自身。”< / em>的

对我做错了什么的想法?

由于

1 个答案:

答案 0 :(得分:2)

您的函数应该是架构绑定的(WITH SCHEMABINDING):

CREATE FUNCTION SchemaBinded(@INPUT INT)
RETURNS INT WITH SCHEMABINDING
BEGIN
RETURN @INPUT * 2 + 50
END
GO