在這裏,我將表明,從另一個函數引用不存在的功能,可以和SQL Server不檢查,直到執行時間:爲什麼我可以在另一個函數中引用一個不存在的函數?
USE [SomeDataBase];
SELECT dbo.Booo();
顯然,如果你不具備的功能Booo
然後將無法識別功能Booo
的錯誤。儘管這並不令人意外!
現在試試這個:
CREATE FUNCTION dbo.Foo()
RETURNS INT
AS
BEGIN
DECLARE @Temp INT
SET @Temp = (SELECT dbo.Booo())
RETURN 1
END
出人意料的是,這股代息儘管在Booo
功能不會退出創建功能Foo
。
有什麼想法?
這是標準的,記錄的SQL Server行爲。這是**功能** - 不是bug。 – 2013-04-28 07:59:47
@marc_s:任何參考? – Alireza 2013-04-28 08:42:13
請參閱[延遲名稱解析](http://msdn.microsoft.com/en-us/library/ms190686.aspx) - 這適用於函數和過程 – 2013-04-28 08:53:14