我正在调试一个更大的脚本,并将其缩小到一个函数正在创建它应该出错的事实。
我测试了以下应该失败的功能:
CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
AS
BEGIN
DECLARE @i INT
SELECT @i = id FROM dbo.IDontExist
RETURN @i
END
相反,创作成功。有什么想法吗?
答案 0 :(得分:2)
默认情况下,可以使用对不存在的表的引用来创建存储过程和函数定义。如果要防止此行为,请使用SCHEMABINDING
选项,如果找不到引用的表,将导致引发错误:
CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
DECLARE @i INT
SELECT @i = id FROM dbo.IDontExist
RETURN @i
END