create function fun_lib
(@l_id int)
returns char(10)
with schemabinding
begin
return (select l_name from dbo.library where l_id=@l_id)
end
godrop function fun_lib
为什么绑定之后,这个函数还是可以删除,不是要先删表吗

解决方案 »

  1.   

    楼主理解错了
    是不能drop 引用的table,除非先drop function
    SCHEMABINDING指定将函数绑定到它所引用的数据库对象。如果函数是用 SCHEMABINDING 选项创建的,则不能更改(使用 ALTER 语句)或除去(使用 DROP 语句)该函数引用的数据库对象。函数与其所引用对象的绑定关系只有在发生以下两种情况之一时才被解除: 除去了函数。
    在未指定 SCHEMABINDING 选项的情况下更改了函数(使用 ALTER 语句)。 
    只有在满足以下条件时,函数才能绑定到架构: 该函数所引用的用户定义函数和视图也已绑定到架构。
    该函数所引用的对象不是用两部分名称引用的。 
    该函数及其引用的对象属于同一数据库。
    执行 CREATE FUNCTION 语句的用户对所有该函数所引用的数据库对象都具有 REFERENCES 权限。 
    如果不符合以上条件,则指定了 SCHEMABINDING 选项的 CREATE FUNCTION 语句将失败。