db2相当于tsql临时表

I_A*_*ROD 6 t-sql 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
Run Code Online (Sandbox Code Playgroud)

错误消息是:

"错误:SQL0104N在""之后发现了一个意外的令牌"#TEMP_A".预期的令牌可能包括:":".SQLSTATE = 42601"

bha*_*mby 11

您必须先在DB2中声明临时表,然后才能使用它:

DECLARE GLOBAL TEMPORARY TABLE SESSION.YOUR_TEMP_TABLE_NAME AS (
    SELECT COLUMN_1, COLUMN_2, COLUMN_3
    FROM TABLE_A
) DEFINITION ONLY
Run Code Online (Sandbox Code Playgroud)

然后填充它:

DECLARE GLOBAL TEMPORARY TABLE SESSION.YOUR_TEMP_TABLE_NAME (
     COLUMN_1 CHAR(10)
    ,COLUMN_2 TIMESTAMP
    ,COLUMN_3 INTEGER
) 
Run Code Online (Sandbox Code Playgroud)

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

即使它被称为"全局"临时表,它只存在于当前会话中.请注意,所有临时表都应该以SESSION架构为前缀.如果您没有提供架构名称,那么SESSION将暗示.

  • 一个有用的注意事项:您可能希望默认包含“提交时保留行”,因为默认情况下“提交时删除行”是不希望的。 (2认同)