获取日期范围的数据时出现错误
DataTable dt = new DataTable();
StringBuilder sb = new StringBuilder("SELECT (select dep_title from hr.departments dp where dp.dep_id = d.dep_id) as title, (SELECT COUNT(*) FROM esd.DOCUMENTS T");
sb.Append("WHERE T.DEP_ID = D.DEP_ID");
sb.Append("and t.systarix between");
sb.Append("to_date(':FROM_DATE', 'MM.DD.YYYY') And");
sb.Append("to_date(':TO_DATE', 'MM.DD.YYYY')) AS SAY");
sb.Append("FROM HR.DEPARTMENTS D");
command.CommandText = sb.ToString();
command.Parameters.Add("FROM_DATE", OracleType.VarChar);
command.Parameters["FROM_DATE"].Value = DE_from.DateTime.Date;
command.Parameters.Add("TO_DATE", OracleType.VarChar);
command.Parameters["TO_DATE"].Value = DE_to.DateTime.Date;
dt.Load(command.ExecuteReader());
gridControl1.DataSource = dt;
错误
ora-01036非法变量名称/编号
答案 0 :(得分:0)
以下是您的查询的内容,以及您如何关闭子选择中的开始(
。我建议阅读一些基本的Sql选择。 Oracle在语法方面有很好的文档。
另请阅读有关如何正确构建/格式化Sub-Query
查看select我格式化的字段,以便您可以看到使用StringBuilder构建的原始查询。
SELECT
(
select dep_title from hr.departments dp where dp.dep_id = d.dep_id) as title,
(
SELECT COUNT(*) FROM esd.DOCUMENTS TWHERE T.DEP_ID = D.DEP_IDand t.systarix
betweento_date(':FROM_DATE', 'MM.DD.YYYY') Andto_date(':TO_DATE', 'MM.DD.YYYY')
) AS SAYFROM HR.DEPARTMENTS D
由于你没有添加的间距“
,你的错误就在了TWHERE 这应该是T WHERE
D.DEP_ID和t.systarix 这应该是D.DEP_ID和t.systarix
betweento_date 这应该在to_date
之间AS SAYFROM 这应该是AS SAY FROM
我建议/建议在Oracle Developer中创建Select Query并首先执行它们。从那里获得查询后,将查询转换为存储过程。