0
为什么存储过程允许在定义中引用不存在的表名?这不适用于表格列,只适用于表格。存储过程允许定义不存在表的名称
实施例:
此代码可以执行和存储过程将被创建。
CREATE PROCEDURE dbo.Test
AS
BEGIN
SELECT * FROM dbo.NonExistingTable -- Table does not exist in database model
END
此代码会引发错误。
CREATE PROCEDURE dbo.Test
AS
BEGIN
SELECT * FROM dbo.ExistingTable -- Table does exist in database model
WHERE NonExistingColumn = 0 -- but column does not exists in table
END
它被称为延迟名称解析。这很烦人,尽管用户多年来要求这样的选择,但仍然无法强制SQL Server不这样做。 –
有什么理由让SQL保持这个选项活着? – veljasije
在创建时没有检查* temp *表存在的情况肯定是存在的,因为在执行过程之前在外部范围中创建这样的表并不罕见,但是我没有亲自遇到任何用例来到永久表。 –