Sql 应该出错但创建成功的函数
Sql function that should error but instead creates successfully
我正在调试一个更大的脚本,并将其缩小到一个函数在它应该出错的时候被创建的事实。
我测试了以下应该失败的函数:
CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
AS
BEGIN
DECLARE @i INT
SELECT @i = id FROM dbo.IDontExist
RETURN @i
END
而是创建成功。有什么想法吗?
默认情况下,可以使用不存在的 table 引用来创建存储过程和函数定义。如果要防止此行为,请使用 SCHEMABINDING
选项,如果未找到引用的 table,这将导致引发错误:
CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
DECLARE @i INT
SELECT @i = id FROM dbo.IDontExist
RETURN @i
END
我正在调试一个更大的脚本,并将其缩小到一个函数在它应该出错的时候被创建的事实。
我测试了以下应该失败的函数:
CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
AS
BEGIN
DECLARE @i INT
SELECT @i = id FROM dbo.IDontExist
RETURN @i
END
而是创建成功。有什么想法吗?
默认情况下,可以使用不存在的 table 引用来创建存储过程和函数定义。如果要防止此行为,请使用 SCHEMABINDING
选项,如果未找到引用的 table,这将导致引发错误:
CREATE FUNCTION ShouldFail( @x INT )
RETURNS int
WITH SCHEMABINDING
AS
BEGIN
DECLARE @i INT
SELECT @i = id FROM dbo.IDontExist
RETURN @i
END