我有一个查询关于创建过程和视图。
简单:
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'
答案 0 :(得分:1)
存储过程使用延迟名称解析,而视图不这样做。延迟名称解析意味着当您创建存储过程时,它仅检查语句的语法是否正确,而不是它所引用的对象/表是否存在于数据库中。只有在执行存储过程时才会在运行时发生。
更多细节可以在这里找到:
https://technet.microsoft.com/en-us/library/ms190686(v=sql.105).aspx