我可以通过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
答案 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()])