以编程方式删除数据库表的主索引



我需要删除某些数据库表上的主键索引。之后将重新创建索引。同时将执行一些计算。

我有以下 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"

相关内容

  • 没有找到相关文章

最新更新