Sql SAS企业指南:如何获取Oracle表索引

Sql SAS企业指南:如何获取Oracle表索引,sql,oracle,sas,Sql,Oracle,Sas,我正在使用SAS Enterprise Guide(EG)6.1,想知道Oracle表的索引是什么。有没有办法编写一个程序来获取这些信息 我试着做: LIBNAME DW ORACLE USER='username' PASSWORD='password' PATH='path.world' SCHEMA='schema'; DATA _NULL_ ; dsid = OPEN(DW.some_table) ; isIndexed = ATTRN(dsid,"ISINDEX") ; PUT is

我正在使用SAS Enterprise Guide(EG)6.1,想知道Oracle表的索引是什么。有没有办法编写一个程序来获取这些信息

我试着做:

LIBNAME DW ORACLE USER='username' PASSWORD='password' PATH='path.world' SCHEMA='schema';

DATA _NULL_ ;
dsid = OPEN(DW.some_table) ;
isIndexed = ATTRN(dsid,"ISINDEX") ;
PUT isIndexed = ;
RUN ;
some_table是(我的表)的名称,但我得到一个错误:

ERROR: DATA STEP Component Object failure.  Aborted during the COMPILATION phase.
ERROR 557-185: Variable some_table is not an object.

引用:

打开获取字符串或解析为字符串的值。所以你需要

dsid= OPEN('dw.some_dataset');
我不知道您是否可以将其用于Oracle,我也不知道ATTR在这个特殊用途上是否有用。这些都可以很好地与SAS数据集配合使用,但要实现ATTR将使用的功能,则取决于libname引擎(以及它使用的任何中间件)

例如,我不使用Oracle,但我有带索引的SQL Server表,我可以在这些表上运行上述代码;代码似乎可以工作(它不显示错误),但当表明显未索引时,它显示为未索引


您最好使用pass-through(
connect to…
)而不是libname进行连接,然后您可以运行本机Oracle语法而不是使用SAS。

您需要询问Oracle定义了哪些索引,而不是SAS。我希望这些信息出现在“sashelp.vindex”视图或相关视图中。如果没有,请尝试访问Oracle的系统视图。您可能需要更多的Oracle访问权限才能做到这一点。@Dirk Horsten我认为我在Oracle中没有足够的访问权限。