应该出错的Sql函数,而是成功创建

时间:2016-02-25 17:11:33

标签: sql compiler-errors syntax-error

我正在调试一个更大的脚本,并将其缩小到一个函数正在创建它应该出错的事实。

我测试了以下应该失败的功能:

CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
AS
BEGIN 
DECLARE @i INT

SELECT @i = id FROM dbo.IDontExist
RETURN @i
END

相反,创作成功。有什么想法吗?

1 个答案:

答案 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