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

时间:2015-05-08 14:44:54

标签: sql database oracle odbc top-n

我可以通过Visual Studio 2010访问我可以通过Microsoft的ODBC for Oracle驱动程序连接的旧企业数据库。我可以查询数据库以确定数据库的类型和版本吗?

此外,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

2 个答案:

答案 0 :(得分:2)

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

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

如果没有看到错误并且不了解您的系统,rownum查询似乎是有效的语法(其他两个不是)。你能发布你得到的实际错误吗?

但是,这些查询似乎都没有传统的“前N”,因为它们都没有order by条款。他们都要求一组基本上任意的行。

答案 1 :(得分:1)

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

    filteredSchema.append([fieldName[0], DecimalType()])
elif fieldName[1] == "string":
    filteredSchema.append([fieldName[0], StringType()])
elif fieldName[1] == "integer":
    filteredSchema.append([fieldName[0], IntegerType()])
elif fieldName[1] == "date":
    filteredSchema.append([fieldName[0], DateType()])