public static List<ApiParameter> GetRequestParamsFromSql(string sql) { var parmList = new List<ApiParameter>(); var segments = SqlParserUtil.GetParsedSqlSegmentList(sql).Find(s => s.SegmentRegExp.StartsWith("(where)")); //取第三段 if (segments != null) { foreach (var piece in segments.BodyPieces) { var match = Regex.Match(piece, @"(?<=:)[\w\W]+?(?=[\W])"); if (match.Success) { ApiParameter param = new ApiParameter() { data_type = DataType.String, is_required = true, parameter_name = match.Value, parameter_name_chs = match.Value, }; parmList.Add(param); } } } return parmList; }
public static List<ApiParameter> GetResponseParamsFromSql(string sql) { var parmList = new List<ApiParameter>(); var segments = SqlParserUtil.GetParsedSqlSegmentList(sql).Find(s => s.SegmentRegExp.StartsWith("(select)")); //取第一段 if (segments != null) { foreach (var piece in segments.BodyPieces) { string[] keyValue = Regex.Split(piece, "\\."); string parameterName = keyValue[0].Trim(',').Trim(); if (keyValue.Length == 2) { parameterName = keyValue[1].Trim(',').Trim(); } ApiParameter param = new ApiParameter() { data_type = DataType.String, is_required = true, parameter_name = parameterName, parameter_name_chs = parameterName, }; parmList.Add(param); } } return parmList; }
public void GenerateParserTest() { var sql = @"select p.pca_code, p.pca_name from ompd.t_pca p where p.pca_code like substr(':pca_code', 0, 4) || '%';"; //Console.WriteLine(SqlParserUtil.GetParsedSql(sql)); //Console.WriteLine("---------------"); SqlParserUtil.GetParsedSqlSegmentList(sql).ForEach(f => { Console.Write(f.GetParsedSqlSegment()); Console.WriteLine("\r\n-----------------\r\n"); }); }
public string ParseSql(string sql) { return SqlParserUtil.GetParsedSql(sql); }