查询以重建域索引

问题描述

Create or replace procedure REBUILD_X_TEXT
IS
Begin

 
EXECUTE IMMEDIATE 'ALTER INDEX Schema.table_name rebuild parameters('REPLACE Metadata sync(every "SYSDATE+15/1440")')'; 
EXECUTE IMMEDIATE 'ALTER INDEX Schema.table_name noparaLLEL';

End REBUILD_X_TEXT;

正出现错误pls-00103:在预期以下情况之一时遇到符号“ REPLACE”:*&=-+; />在in是mod余数而不是rem返回 或!=或〜=> = 或like2 like4 likec之间使用||多集批量成员子多集

解决方法

如果您的EXECUTE IMMEDIATE语句中有单引号,则需要通过在一行中使用两个单引号来转义它们,如下所示:

CREATE OR REPLACE PROCEDURE REBUILD_X_TEXT
IS
BEGIN
    EXECUTE IMMEDIATE 'ALTER INDEX Schema.table_name rebuild parameters(''REPLACE metadata sync(every "SYSDATE+15/1440")'')';

    EXECUTE IMMEDIATE 'ALTER INDEX Schema.table_name NOPARALLEL';
END REBUILD_X_TEXT;
,

有时候使用q-literals更容易:

EXECUTE IMMEDIATE q'[
   ALTER INDEX Schema.table_name 
   rebuild parameters('REPLACE metadata 
                       sync(every "SYSDATE+15/1440")
                       '
                     )
   ]'; 
EXECUTE IMMEDIATE 'ALTER INDEX Schema.table_name NOPARALLEL';