首页 > 代码库 > SQL 语句在存储过程执行和在SSMS中执行的差异

SQL 语句在存储过程执行和在SSMS中执行的差异

SQL 语句在存储过程执行和在SSMS中执行的差异

 

SSMS是SQlSerever management studio。本文所述情形在SQLServer2008中测试。

有时发现同样几条语句,在SSMS中执行OK,但通过存储过程来执行就报错。问题基本都涉及临时表的处理。实践发现以下差异,编程开发人员务必加以注意,可少走弯路。

 

1,执行存储过程后,其中的临时表均不再存在,不能访问。而SSMS执行,只要不关闭当前进程(当前窗口),中间临时表能继续访问。

2,存储过程中通过exec执行语句,动态产生的临时表,一旦exec结束,即使存储过程还在执行中,后续的语句也不能再访问以前通过exec执行语句动态产生的临时表。如果要继续访问,有两个办法,一是在同一个exec过程调用中,二是先create临时表,在exec中插入语句,那么exec结束后,临时表依然存在可以访问。

 

总的来说,SSMS执行环境较为宽松,一般均能正常执行;而存储过程则常会产生错误。因此,语句不能只在SSMS中调试,必须经过存储过程调用测试检验才能下定论。

 

SQL 语句在存储过程执行和在SSMS中执行的差异