Informix - 如果存在则删除临时表
Posted
技术标签:
【中文标题】Informix - 如果存在则删除临时表【英文标题】:Informix - Delete temp table if exists 【发布时间】:2016-02-03 00:19:51 【问题描述】:我正在尝试在运行查询时删除临时表。我找不到答案,并且已经搜索过文档。
基本上,我要做的是检查表是否存在;如果确实存在,请将其删除并继续选择,以便将结果插入临时表中。如果它不存在,那么,只需创建 TEMP 表,以便插入结果。
我使用的是 Informix 11.70
【问题讨论】:
【参考方案1】:如果在 11.70 中支持(在 12.10 中),则语法为:
DROP TABLE IF EXISTS temp_table_name;
DROP TABLE 的 11.70 手册表明它存在于 11.70 和 12.10 中。
然后使用INTO TEMP temp_table_name
子句运行查询以重新创建表。
【讨论】:
.net 提供程序是否支持此语法?我正在针对 CSDK 4.10FC4 和 IfxException 进行尝试:“错误 [42000] [Informix .NET 提供程序][Informix]发生了语法错误。” 最相关的是“您使用哪个版本的 Informix 作为数据库服务器?”IF EXISTS
表示法是在 11.70 中添加的,因此如果您使用的是 11.50 或更早版本,服务器将根本不支持该表示法。我不希望 .NET 提供程序本身存在特定问题。我不希望它解析和拒绝语法(这是服务器的工作,而不是客户端 API 的工作)。不过更好笑的事情已经知道了,而且 CSDK 4.10.FC4 通常是和 Informix 12.10(名义上是 12.10.FC4)服务器相关联的,所以我有点疑惑。
哦,当然 - 这是有道理的。我检查了我正在使用的开发服务器,它是 11.10.UC1,所以这就解释了。我在 12.10FC8 服务器上运行它,它按预期工作。
太棒了。我喜欢这样的问题的简单解决方案。我会观察到,就 IBM 而言,11.10 已经停止服务多年。理想情况下,即使是开发服务器也不应该使用它。更重要的是它不用于生产,但这显然不是问题。【参考方案2】:
还可以添加异常块,如:
Begin
On Exception in (-206)
End Exception with Resume;
Drop table <<myTempTable>>;
End;
【讨论】:
以上是关于Informix - 如果存在则删除临时表的主要内容,如果未能解决你的问题,请参考以下文章