问题描述
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';