Здесь я покажу, что ссылки на несуществующие функции из другой функции можно и 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
Удивительно, но эта сума создает функцию Foo
, несмотря на то, что функция Booo
не выходит.
Любая идея?
Это стандартное, документированное поведение SQL Server. Это ** ** - не ошибка. –
@marc_s: Любая ссылка? – Alireza
См. [Разрешение отложенного имени] (http://msdn.microsoft.com/en-us/library/ms190686.aspx) - это относится как к функциям, так и к процедурам –