在存储过程中,当我使用表中的不可用列与临时表中的列连接时,它在编译时不会引发错误。而当我使用主表连接相同的不可用列时,它会在编译时抛出错误。我可以知道原因或行为的原因。
例如,考虑以下查询
从TableA中选择TableA.Unknown_Column - 这会引发“Unknown_Column”不存在的错误(编译时)
从TableA中选择TableA.Unknown_Column加入#Temp_Table - 这个成功编译
答案 0 :(得分:2)
如果临时表存在,则SP将查看代码以查找不一致,并在引用临时表中不存在的某些列时抛出错误。 如果临时表不存在,但您在SP中创建临时表,它将不会检查这些不一致性并且它将进行编译。 或多或少...我认为这就是你正在发生的事情。
答案 1 :(得分:0)
[temp]表模式。或者以前。它仅在代码执行时创建。因此,SQL Server会在执行时验证架构。
[标准]表已经创建/已知模式,因此,在管理或Visual Studio中使用它时,IDE可以检查或者您的代码在编译对象之前引用有效的模式(表结构)/阻止在此编译案件。