我需要删除某些数据库表上的主键索引。之后将重新创建索引。同时将执行一些计算。
我有以下 SQL 命令:
DROP INDEX "SAPSR3"."KNA1~0";
工作正常。
但一旦在ABAP计划中调用:
EXEC SQL.
DROP INDEX SAPSR3.KNA1~0
ENDEXEC.
已引发消息"执行本机 SQL 时发生 SQL 错误 911"。
我也尝试过:
CALL FUNCTION 'RSDG_KEY_INDEX_DEL'
EXPORTING
i_tablnm = lv_tblname. " containing "KNA1"
这也行不通。
是否有任何FM或类似的方式来执行此类活动?
我也试过:
EXEC SQL.
DROP INDEX KNA1~0
ENDEXEC.
您在 SQL 控制台 (DROP INDEX "SAPSR3"."KNA1~0";
( 和 ABAP 程序 (DROP INDEX SAPSR3.KNA1~0
( 中尝试的内容与您所看到的编写方式不同!
我刚刚在 ABAP 中尝试了您在 SQL 控制台中尝试的版本下方,它按预期删除了索引!
EXEC SQL.
DROP INDEX "SAPSR3"."KNA1~0"
ENDEXEC.
那么,为什么在您的 ABAP 尝试中,您删除了索引名称周围的双引号?(以及方案名称,但我想它的不良影响较小(。
在 SQL 控制台中,我真的不确定DROP INDEX SAPSR3.KNA1~0
是否有效!因为有特殊的"波浪号"字符,所以需要在索引名周围加双引号,以下是最小的工作语法:DROP INDEX SAPSR3."KNA1~0"
。