临时表 (XXX) 已存在于会话中

Posted

技术标签:

【中文标题】临时表 (XXX) 已存在于会话中【英文标题】:Temp table (XXX) already exists in session 【发布时间】:2014-03-18 13:15:10 【问题描述】:

我尝试填充我的临时表,但出现以下错误:

SQL Error (-958) : Temp table (temp_table11) already exists in session.

CREATE TEMP TABLE temp_table11
  ( emp_num int);


SELECT emp_num FROM hrgetd INTO  temp_table11
WHERE( emp_num = v_emp_num AND calc_year = p_calc_year)

【问题讨论】:

【参考方案1】:

您正尝试在您的选择语句中再次创建表,试试这个

CREATE TEMP TABLE temp_table11
  ( emp_num int);

INSERT INTO temp_table11
SELECT emp_num FROM hrgetd
WHERE( emp_num = v_emp_num AND calc_year = p_calc_year)

【讨论】:

很好,但是当我在那之后检查IF temp_table11 IS NOT NULL我得到temp_table11 not declared!!【参考方案2】:

当你使用 SELECT INTO 时,你不需要声明你的表

SELECT emp_num FROM hrgetd INTO  temp_table11
WHERE( emp_num = v_emp_num AND calc_year = p_calc_year)

【讨论】:

以上是关于临时表 (XXX) 已存在于会话中的主要内容,如果未能解决你的问题,请参考以下文章

Sybase 删除临时表

MySQL DLL操作--------临时表存储实战

oracle临时表

oracle创建临时表

oracle 临时表

SQL Server 表变量和临时表的区别