【问题标题】:DB2 ALTER TABLE QUERY NOT SUPPORTING INSIDE STORED PROCEDUREDB2 ALTER TABLE 查询不支持内部存储过程
【发布时间】:2021-01-17 10:05:45
【问题描述】:

我正在尝试在存储过程下面运行:

CREATE OR REPLACE PROCEDURE DATAMART.UPDATE_IDENTITY()
BEGIN
    DECLARE CONST_MESSAGE_ENTRY_KEY INTEGER;

    SET CONST_MESSAGE_ENTRY_KEY = (SELECT MAX(MESSAGE_ENTRY_KEY) FROM DATAMART.MESSAGE_ENTRIES_LOG);

    ALTER TABLE DATAMART.MESSAGE_ENTRIES_LOG ALTER COLUMN MESSAGE_ENTRY_KEY RESTART WITH CONST_MESSAGE_ENTRY_KEY;   
    
END;

我收到此错误:

SQL 错误 [42601]:在“E_ENTRIES_LOG)”之后发现了意外的标记“ALTER”。预期的标记可能包括:“

".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14

注意:如果我在没有存储过程的情况下运行 alter query,它运行良好。

【问题讨论】:

    标签: stored-procedures db2 alter-table


    【解决方案1】:

    这是记录在案的行为。

    对于 Linux/Unix/Windows 上的 Db2,复合 SQL(已编译)块不支持 ALTER(作为静态语句)。

    请参阅文档here

    如果要在 SQL PL 存储过程中运行 ALTER 语句,则必须使用动态 SQL(即 prepare & executeexecute immediate ),并遵守所有其他记录在案的规则。

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 2011-10-10
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多