gpt4 book ai didi

c# - 使用 C# 解析 SQL 中的嵌套 block

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:42 25 4
gpt4 key购买 nike

我想对 SQL 代码进行分析。在此我想分隔 SQL 代码中的 block 。例如,在下面的代码中

for condition1 loop
stmt1;
for condition2 loop
stmt2;
end loop;
end loop;

我想将这两个 block 分开并创建一个包含外循环 block 和内循环 block 的数据结构。

哪种方法最好?是否有可用的解析器可以以最佳方式处理嵌套循环?

最佳答案

我会建议这种 block (以及 SELECT、CASE、WITH 和类似 block )的组合模式。

public interface ICodeEntity { }
public interface IObjectEntity { }
public class Column: IObjectEntity
{
public string name;
public System.Data.DbType type;
}
public class Table: IObjectEntity
{
public List<Column> columns = new List<Column>();
public string alias;
}
public class Where : ICodeEntity { }
public class GroupBy : ICodeEntity { }
public class OrderBy : ICodeEntity { }
public class Select : Table, ICodeEntity
{
public List<Table> joinList = new List<Table>();
public Where where;
public GroupBy groupBy;
public OrderBy orderBy;
}
public class Condition : ICodeEntity { }
public class If : ICodeEntity
{
public Condition condition;
public List<ICodeEntity> codeList = new List<ICodeEntity>();
}

在程序的某处:

If if1 = new If();
if1.codeList.Add(new If());

查看相关链接:
CodeProject: Illustrated GOF Design Patterns in C#
data&object factory: Composite pattern

关于c# - 使用 C# 解析 SQL 中的嵌套 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/581544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com