SQL 语句在存储过程执行和在SSMS中执行的差异
Posted jack kwok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中执行的差异的主要内容,如果未能解决你的问题,请参考以下文章
从 MS SQL SERVER 和 MS ACCESS 调用存储过程的结果之间的差异
sql 在运行查询和在存储过程中运行该查询时使用不同的执行计划?
存储过程中的动态 SQL 不返回结果集;在 SSMS 中运行时,我得到了结果