查询重建域索引
Posted
技术标签:
【中文标题】查询重建域索引【英文标题】:Query to rebuilt domain index 【发布时间】:2020-09-30 15:11:43 【问题描述】: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”:* & = - + ; > at in is mod 余数 not rem return 返回 or != or ~= >= and or like2 like4 likec between into using ||多组批量成员子多组
【问题讨论】:
为了帮助获得答案,请详细说明您想要实现什么以及您的代码的上下文。 【参考方案1】:如果您的 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;
【讨论】:
【参考方案2】:有时使用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';
【讨论】:
以上是关于查询重建域索引的主要内容,如果未能解决你的问题,请参考以下文章
Sql server 创建索引后,只有查询后重建才会生效,不知为啥?