问题描述
我遇到一个间歇性问题,从proc中调用了临时表。我将尝试描述这种情况。
- 我正在从Java运行大型sql字符串。
- 此字符串调用多个proc,包括我称为ProcA和ProcB的proc。
- 作为ProcA的一部分,我使用SELECT INTO #roles创建了一个临时表#roles。此过程没有没有名为cycleid的列。
- 作为ProcB的一部分,我还使用SELECT INTO #roles创建了一个临时表#roles。此过程确实有一个名为cycleid的列。
在大多数情况下,这可以按预期工作。我对这种情况下的临时表的理解是,一旦创建它们的proc完成运行,它们就会被销毁。而且由于它们都是主语句的“子代”,因此它们不应能够访问彼此的临时表。
尽管有时,我会收到以下错误消息:
:Exception :: com.inet.tds.sqlException:消息207,级别16,状态1,过程ProcB,第123行,sqlstate S0022 [QA-SERVER]无效的列名'cycleid'
似乎服务器正在读取错误的临时表或假定该表的结构错误(目前应该已将其销毁)。
有人对我有一个解释,或者一个方向,我可以开始做更多的研究来弄清楚这一点吗?谢谢大家。
有一种变通方法是将所有临时表重命名为唯一的或删除它们,但这是重构和测试的很多。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)