如何确定数据库的类型 - 旧的遗留企业数据库
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
子句。他们都在要求一组基本上任意的行。
我可以访问遗留公司数据库,我可以通过 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
子句。他们都在要求一组基本上任意的行。