【发布时间】:2017-04-12 10:50:54
【问题描述】:
这是一个类似于我要执行的查询:
with x as(
select ds.*, row_number() over (partition by FOO order by BAR) rn
from datasource ds
where datasupplierid = 3)
select column1, column2, rn from x where rn <= 2
我正在这样执行它(来自 c#):
using (var con = new OracleConnection(this.connectionString)) {
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = this.command;//my query
cmd.CommandType = CommandType.Text;
var reader = cmd.ExecuteReader();
}
我从中得到的是 ORA-00933: SQL 命令未正确结束错误。
我尝试将查询重写为这种形式:
select column1, column2, rn from (
select ds.*, row_number() over (partition by FOO order by BAR) rn
from datasource ds
where datasupplierid = 3)
where rn <= 2
但这并没有解决我的问题。有没有办法执行这样的查询?
【问题讨论】:
-
您是否检查过 Oracle 使用 sql profiler 看到的内容?在c#中构造查询时可能会出现简单的语法错误,例如缺少换行符或空白。
-
@NikolaMarkovinović 任何提示我该如何进行此类检查?我试过查询,一些监视器与 oracle sql developer 集成,但没有一个好的结果。
-
抱歉,过去二十年我几乎只使用 Sql Server。我试图在 Oracle 中找到一些有关跟踪/分析的有用信息,但失败了。有关工具和系统表的一些信息,请参阅this question。