db2相当于tsql临时表

时间:2012-07-10 21:49:55

标签: tsql db2 temp-tables

如何在DB2中执行以下TSQL查询?我在根据查询结果创建临时表时遇到问题。

SELECT 
COLUMN_1, COLUMN_2, COLUMN_3
INTO #TEMP_A
FROM TABLE_A
WHERE COLUMN_1 = 1 AND COLUMN_2 = 2

错误消息是:

  

“错误:SQL0104N在”“之后找到意外的令牌”#TEMP_A“。预期的令牌可能包括:”:“。SQLSTATE = 42601”

3 个答案:

答案 0 :(得分:9)

在使用它之前,必须在DB2中declare a temp table

DECLARE GLOBAL TEMPORARY TABLE SESSION.YOUR_TEMP_TABLE_NAME AS (
    SELECT COLUMN_1, COLUMN_2, COLUMN_3
    FROM TABLE_A
) DEFINITION ONLY

然后填充它:

INSERT INTO SESSION.YOUR_TEMP_TABLE_NAME
SELECT COLUMN_1, COLUMN_2, COLUMN_3
FROM TABLE_A
WHERE COLUMN_1 = 1
  AND COLUMN_2 = 2

它不像SQL Server那样直截了当。 :)

即使它被称为“全局”临时表,它也只存在于当前会话中。请注意,所有临时表都应以SESSION架构为前缀。如果您未提供架构名称,则会隐含SESSION

答案 1 :(得分:1)

也许“with”子句就是你要找的东西:

with TEMP_A as (
  SELECT COLUMN_1, COLUMN_2, COLUMN_3
  FROM TABLE_A
  WHERE COLUMN_1 = 1 AND COLUMN_2 = 2
)
-- now use TEMP_A
select * from TEMP_A

答案 2 :(得分:0)

事实证明,我没有权限创建临时表。