ABAP SELECT语句允许提供数据库提示。它们以关键字%_HINTS开头。现在我想知道SELECT语句保持提示的正确语法:哪些提示都可以出现?我已经检查了ABAP关键字文档,但似乎没有提到它们。
您是否可以向我指出一些描述数据库提示如何适合ABAP语法的文档?
关于我的问题的更多信息:我们构建了一个工具(用Java),可以自动将ABAP代码转换为不同的ABAP代码。应用于SELECT语句,它可能会添加或删除子句。因此,提示的位置可能会因转换而发生变化。所以,我的问题是允许提示,而不是正确提示的样子。
答案 0 :(得分:3)
官方文档位于note 129385(但遗憾的是,如果没有帐户,则无法访问)。
答案 1 :(得分:0)
DB6数据库的两个示例,因为该注释不包含任何:
%_HINTS DB6 '<NLJOIN><IXSCAN TABLE=''VBAP'' />' DB6 '<IXSCAN TABLE=''VBEP'' /></NLJOIN>'
%_HINTS DB6 '<IXSCAN TABLE=''VBEP'' INDEX=''"VBEP~ZI0"'' />'
编辑:提示是选择块中的最后一个语句。
SELECT *
INTO TABLE lt_table
FROM dbtable
WHERE x = 1
%HINTS "first hint
%HINTS "second hint
. "<<< end of select statement
答案 2 :(得分:0)
不要使用它。如果有一天你迁移到HANA,这个HINT将破坏你的代码,你必须逐个删除它。我之前尝试过这些提示,并没有显着提高性能。
但如果您仍想使用它,这些是特定于数据库的,这是Oracle的语法
答案 3 :(得分:0)
... %_HINTS <DB type> 'one or more hints'
在ABAP documentation中进行了描述:
<DB type>
代表提示适用的数据库类型:
有两类提示(您可以将它们混合在同一字符串中):
Open SQL提示在运行时由SAP数据库接口解释,并且在&符之间具有语法(在注释48230 - Parameters for the SELECT ... FOR ALL ENTRIES statement中进行了描述),因此它们的语法是已知的(但是您必须阅读SAP注释):
数据库提示是其他所有不在“与”号之间的提示。它们直接发送到相关的数据库,由它们进行解释。如果某些提示无效,则数据库将忽略它们。注释129385 - Database hints in Open SQL中提供了简短的概述,但是您必须阅读数据库系统的官方文档才能获得最新信息。
请注意,可以为多个数据库提供提示,但在运行时仅使用当前SAP数据库之一(如果有):
SELECT ... %_HINTS ORACLE 'INDEX...'
HDB 'INDEX...'
MSSQLNT 'INDEX...'.
至少从ABAP版本4.5开始,允许SELECT
,UPDATE
和DELETE
的提示。
编译器可能会在严格模式下尽可能地检查提示。