Sybase 删除临时表

Posted

技术标签:

【中文标题】Sybase 删除临时表【英文标题】:Sybase Dropping Temporary Table 【发布时间】:2010-11-23 03:13:52 【问题描述】:

当您在 Sybase ASE 12 中删除一个临时表时,是否有人会遇到问题,它仍然存在于当前会话中。所以你在尝试再次选择数据时遇到“表已存在”

【问题讨论】:

【参考方案1】:

好吧,在编写代码之前,您需要阅读手册,至少要阅读您希望使用的命令的语法。否则,您将在每一个转折点都面临问题。这取决于你想做什么。

    SELECT ... INTO #MyTable 创建表并成功,因为它不存在。所以第二个SELECT ... INTO #MyTable 会尝试创建#MyTable,发现它存在,然后失败。

    如果您想在同一个表中执行第二个SELECTTRUNCATE 表,然后使用SELECT ... INTO EXISTING TABLE #MyTable

    DROP TABLE 并跳过EXISTING TABLE 修饰符。

    如果您希望表格包含多个SELECTS 的总和,显然,请跳过TRUNCATE

【讨论】:

谢谢,我发现必须在 DROP TABLE #Tmp 之后的另一批中选择 SELECT INTO #Tmp 才能成功。 @Luke。对于会话,临时表正是如此。如果你离开会议,你会遇到奇怪的问题。如果您需要可从不同批次或会话访问的临时表,请使用 tempdb..table_name 表单而不是 #table 表单。【参考方案2】:

我通常这样做:

1) 创建表 #temptable ( ....

)

插入 #temptable 选择.....

这永远不会出错。

这解决了另一个可能的错误。如果“select INTO”附带的 WHERE 子句不产生任何行,则临时表不会有零行,但根本不会创建临时表。这可能会使存储的过程在以后爆炸。

【讨论】:

以上是关于Sybase 删除临时表的主要内容,如果未能解决你的问题,请参考以下文章

将数据插入临时表

如何处理Sybase临时表空间tempdb已满的问题

使用SqlBulkCopy 从sybase复制表到sqlserver中遇到重复的数据怎么办? 能不能设置什,跳过该次插入

临时表,临时表什么时候删除

Sybase 表分区

MySQL 临时表:创建删除语法剖析