如何确定数据库的类型 - 旧的遗留企业数据库

How to determine what type of database - Old legacy corporate database

我可以访问遗留公司数据库,我可以通过 Microsoft 的 ODBC for Oracle 驱动程序连接到 Visual Studio 2010 年。我可以查询数据库以确定数据库的类型和版本吗?

此外,Microsoft ODBC for Oracle 驱动程序是仅连接到 Oracle 服务器,还是也连接到其他服务器?

在这一点上,我只需要一个 "Top-N" 查询,但无法让它工作。这是我试过的几个简单查询,都给出了语法错误。

SELECT     X_DATETIME_INSERT, X_USERID_INSERT, DB_ACC, ROW_ID, ACD_ACCIDENT_NO, GROUP_ROW_ID, NAME, ADDRESS_1, ADDRESS_2, ADDRESS_3, ADDRESS_4, 
                  PHONE, INJURY, DELETE_ROW
FROM         EMSDBA.ACD_VICTIM
WHERE rownum <= 100;

SELECT     TOP 100 X_DATETIME_INSERT, X_USERID_INSERT, DB_ACC, ROW_ID, ACD_ACCIDENT_NO, GROUP_ROW_ID, NAME, ADDRESS_1, ADDRESS_2, ADDRESS_3, ADDRESS_4, 
                  PHONE, INJURY, DELETE_ROW
FROM         EMSDBA.ACD_VICTIM

SELECT     X_DATETIME_INSERT, X_USERID_INSERT, DB_ACC, ROW_ID, ACD_ACCIDENT_NO, GROUP_ROW_ID, NAME, ADDRESS_1, ADDRESS_2, ADDRESS_3, ADDRESS_4, 
                  PHONE, INJURY, DELETE_ROW
FROM         EMSDBA.ACD_VICTIM
LIMIT 100

对于 top-n,请记住 rownum 是在任何排序之前计算的,因此您需要将排序下推到子查询中。例如,要获得 x_datetime 排序的前 100 个,您可以:

   SELECT *
   FROM (SELECT  X_DATETIME_INSERT, X_USERID_INSERT
                , DB_ACC, ROW_ID, ACD_ACCIDENT_NO
                , GROUP_ROW_ID, NAME, ADDRESS_1
                , ADDRESS_2, ADDRESS_3, ADDRESS_4, 
                  PHONE, INJURY, DELETE_ROW
         FROM         EMSDBA.ACD_VICTIM
         ORDER BY x_datetime)
WHERE rownum <= 100;

Microsoft ODBC for Oracle 驱动程序实际上只会连接到 Oracle 数据库。可以通过查询v$version

获取基本版本信息
SELECT *
  FROM v$version

在没有看到错误并且对您的系统一无所知的情况下,rownum 查询似乎是有效的语法(其他两个不是)。你能 post 你得到的实际错误吗?

但是,这些查询中的

None 似乎在执行传统的 "Top N",因为其中 none 具有 order by 子句。他们都在要求一组基本上任意的行。