【发布时间】:2016-02-03 00:19:51
【问题描述】:
我正在尝试在运行查询时删除临时表。我找不到答案,并且已经搜索过文档。
基本上,我要做的是检查表是否存在;如果确实存在,请将其删除并继续选择,以便将结果插入临时表中。如果它不存在,那么,只需创建 TEMP 表,以便插入结果。
我使用的是 Informix 11.70
【问题讨论】:
我正在尝试在运行查询时删除临时表。我找不到答案,并且已经搜索过文档。
基本上,我要做的是检查表是否存在;如果确实存在,请将其删除并继续选择,以便将结果插入临时表中。如果它不存在,那么,只需创建 TEMP 表,以便插入结果。
我使用的是 Informix 11.70
【问题讨论】:
如果在 11.70 中支持(在 12.10 中),则语法为:
DROP TABLE IF EXISTS temp_table_name;
DROP TABLE 的 11.70 手册表明它存在于 11.70 和 12.10 中。
然后使用INTO TEMP temp_table_name 子句运行查询以重新创建表。
【讨论】:
IF EXISTS 表示法是在 11.70 中添加的,因此如果您使用的是 11.50 或更早版本,服务器将根本不支持该表示法。我不希望 .NET 提供程序本身存在特定问题。我不希望它解析和拒绝语法(这是服务器的工作,而不是客户端 API 的工作)。不过更好笑的事情已经知道了,而且 CSDK 4.10.FC4 通常是和 Informix 12.10(名义上是 12.10.FC4)服务器相关联的,所以我有点疑惑。
还可以添加异常块,如:
Begin
On Exception in (-206)
End Exception with Resume;
Drop table <<myTempTable>>;
End;
【讨论】: