Stored procedures DB2可以';t刷新存储过程中的物化查询表(MQT)

Stored procedures DB2可以';t刷新存储过程中的物化查询表(MQT),stored-procedures,db2,refresh,materialized-views,Stored Procedures,Db2,Refresh,Materialized Views,我在刷新存储过程内部的MQT时遇到问题 尝试刷新表时,我收到以下错误: 错误[42601][IBM][DB2/LINUX8664]SQL0104N在“语言SQL开始”之后发现意外的标记“刷新”。预期标记可能包括:“TRUNCATE” 不能在存储过程中以静态语句的形式执行刷新表,因为它只能作为动态语句运行 因此,正确的方法是使用executeimmediate语句: CREATE OR REPLACE PROCEDURE TEST_PROC LANGUAGE SQL BEGIN dec

我在刷新存储过程内部的MQT时遇到问题

尝试刷新表时,我收到以下错误:

错误[42601][IBM][DB2/LINUX8664]SQL0104N在“语言SQL开始”之后发现意外的标记“刷新”。预期标记可能包括:“TRUNCATE”


不能在存储过程中以静态语句的形式执行
刷新表
,因为它只能作为动态语句运行

因此,正确的方法是使用
executeimmediate
语句:

CREATE OR REPLACE PROCEDURE TEST_PROC 
   LANGUAGE SQL
BEGIN
  declare vSQL varchar(1024);

  set vSQL = 'refresh table MQT_TEST';
  execute immediate vSQL;

END@
CREATE OR REPLACE PROCEDURE TEST_PROC 
   LANGUAGE SQL
BEGIN
  declare vSQL varchar(1024);

  set vSQL = 'refresh table MQT_TEST';
  execute immediate vSQL;

END@