为非存在表创建视图和过程?

时间:2016-07-20 23:00:24

标签: sql-server

我有一个查询关于创建过程和视图。

简单:

Create Procedure usp_demoXYZ
As
Begin
Select * from Table1 -- This table is not present in current Database
End

执行上述查询后,查询成功执行并创建程序。

但是我们在创建View时也适用同样的事情。

Create View Vw_demoXYZ
As
Select * from Table1 -- This table is not present in current Database

之后我运行上面的查询,sql server显示错误..

Msg 208, Level 16, State 1, Procedure Vw_demoXYZ, Line 4

Invalid object name 'Table1'

1 个答案:

答案 0 :(得分:1)

存储过程使用延迟名称解析,而视图不这样做。延迟名称解析意味着当您创建存储过程时,它仅检查语句的语法是否正确,而不是它所引用的对象/表是否存在于数据库中。只有在执行存储过程时才会在运行时发生。

更多细节可以在这里找到:

https://technet.microsoft.com/en-us/library/ms190686(v=sql.105).aspx