1,故障现象
一次程序运行,出现如下错误:
对应代码如下:
2,故障分析
Query_alert_2的语句在查询分析器中单独执行是正常的。排除语句出错。
如果注解掉Query_alert_1,则错误变为Query_alert_3执行出错:
2019-07-11 09:32:26 Query_alert_1执行完毕
2019-07-11 09:32:27 Query_alert_2执行完毕
2019-07-11 09:32:42 Do_Update_Statis出错:列名 'bat_pos1' 无效。
如果注解掉Query_alert_1、Query_alert_2,则Query_alert_3执行正常。
可见,出现错误是delphi内数据库组件产生的,与数据库执行无关。
3,故障原因及解决
数据库版本的SQLServer2005,执行的这些SQL语句含有临时表,如:
if OBJECT_ID('tempdb..#t1')>0 drop table #t1
执行正式的SQL之前,会运行以上语句,以删除当前同名的临时表。
但实际运行发现,这些临时表不一定会被删除,而当引用时,可能会引用到以前的临时表,导致栏位不存在错误。
因此,在Query_alert_1、Query_alert_2,Query_alert_3语句的最后,都加上drop 临时表的语句,以确保临时表在下次使用前一定不存在。如:
--检查临时表是否在用,有则删除,以防错误 if OBJECT_ID('tempdb..#t1')>0 drop table #t1 if OBJECT_ID('tempdb..#t2')>0 drop table #t2 /* 执行相关业务逻辑SQL select * into #t1 from table1 。。。 。。。 */ --执行完毕,清除临时表,以便下次再使用 if OBJECT_ID('tempdb..#t1')>0 drop table #t1 if OBJECT_ID('tempdb..#t2')>0 drop table #t2
修改后,结果多条SQL语句顺序执行正常。
4,总结
关于数据库临时表,一定要注意在查询器中执行和在程序代码中执行是有区别的。
区别在于查询器会自动提交交易,并清除临时表,而程序则不一定。
以上这篇解决delphi TAdoQuery组件的close方法导致”列名无效“错误的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
我使用以下源代码创建了自己的SDF模式:https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/text/simpledateformat.html 导致以下错误,我不明白原因: 任何帮助都会很棒! 编辑:我正在使用JDK 13 进程结束,退出代码为%1
本文向大家介绍MySQL错误Forcing close of thread的两种解决方法,包括了MySQL错误Forcing close of thread的两种解决方法的使用技巧和注意事项,需要的朋友参考一下 最近网站访问量大增,可能有些频道程序也有一些问题,造成了MySQL数据库出现Forcing close of thread 28790 user错误。如果遇到这种情况改怎么解决呢?icec
本文向大家介绍BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法,包括了BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 我用过的两个版本: v0.5.2-dev,0.4.5 这里针对于提交方法进行说明一下,如下代码: 以上所述是小编给大家介绍的Boot
本文向大家介绍Mysql修改datadir导致无法启动问题解决方法,包括了Mysql修改datadir导致无法启动问题解决方法的使用技巧和注意事项,需要的朋友参考一下 centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 新的datadir路径确实没问题,而且目录和目录下所有文件都是777权限,上层目录也有rx权限,只
问题内容: 我不断收到此错误: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以找到在第1行的“ …”附近使用的正确语法。 我知道我的“组”字段有问题,因为如果删除它,我的表将被更新而不会出现任何问题。 这是我的表单代码: 这是我对MySQL代码的更新: 如您所见,我做了一些回显,以检查是否获取了我的数据,并且一切正常。“分组”数据只会使事情变糟。有任何想法吗? 问题答案: 是保
我试图在页面上显示,但它给出了一个错误500。我所有的代码似乎都在数据库和平台上运行。 它在错误日志中给出此错误: [错误]42094#0:*233568 FastCGI在标准中发送:“PHP消息:PHP通知:未定义索引:id位于/var/www/../../../../../../../classes/pageuser.class.PHP第519行 在第页用户。班php: 关于loan.clas