SQL模板和模板实例化
需求:需要得出一个数据源DataTable,我已知SQL和HttpRequest如何,通过SQL模板的方式去实例化匹配HttpRequest中的参数实例化为查询SQL,最后返回DataTable
1、SQL模板
1 SELECT 2 SUBSTR(PLACENAME, instr(PLACENAME, '-') + 1) 场景名, 3 COUNT(*) 小区数, 4 SUM(ALARMCOUNT) 流量TB, 5 ROUND(SUM(USERCOUNT)) 在线用户, 6 SUM(TOTALFLOW) 高负荷小区数, 7 TO_CHAR(ROUND(AVG(DOWNPRBRATE), 2), 'fm9999990.00') || '%' 小区严重告警, 8 SUM(BURTHENCOUNT) 下行PRB利用率 9 FROM V_CHILDSCENE_REAL_INFO 10 WHERE PLACEID = ':%PLACEID%' 11 GROUP BY STIME, PLACEID, PLACENAME 12 ORDER BY 高负荷小区数 DESC
2、SQL实例化
1 private string CreateSQL(string sql, HttpRequest req) { 2 IList<string> list = new List<string>(); 3 if (sql.IndexOf(":%") > -1) 4 { 5 var mat = Regex.Matches(sql, "(?<=:%)[^%]+(?=%)"); 6 foreach (Match item in mat) 7 { 8 list.Add(item.Value); 9 } 10 foreach (var item in list) 11 { 12 sql = sql.Replace(":%" + item + "%", req[item]); 13 } 14 } 15 return sql; 16 }
3、查询数据并返回
1 using (var db = new OracleDB()) 2 { 3 return db.ExecuteDataTable(sql); 4 }