Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ParseStatementList无法处理有效的SQL语句_C#_.net_Sql_Parsing - Fatal编程技术网

C# ParseStatementList无法处理有效的SQL语句

C# ParseStatementList无法处理有效的SQL语句,c#,.net,sql,parsing,C#,.net,Sql,Parsing,我试图使用TSql100Parser.ParseStatementList方法以编程方式解析sql语句并提取对象名称。这来自Microsoft.Data.Schema.ScriptDom.Sql命名空间。代码如下: string sql = "CREATE VIEW testView AS SELECT * from testTable"; var parser = new TSql100Parser(false); StatementList parsedStatements; IList e

我试图使用TSql100Parser.ParseStatementList方法以编程方式解析sql语句并提取对象名称。这来自Microsoft.Data.Schema.ScriptDom.Sql命名空间。代码如下:

string sql = "CREATE VIEW testView AS SELECT * from testTable";
var parser = new TSql100Parser(false);
StatementList parsedStatements; IList errrors;

using (TextReader reader = new StringReader(sql)) 
{ 
       parsedStatements = parser.ParseStatementList(reader, out errors);
}
ParseStatementList方法返回null,并在错误列表中插入两个错误。错误是“CREATE附近的语法无效”和“VIEW附近的语法无效”。这很奇怪,因为TSql100.Parse方法成功解析了同一个sql语句。同样奇怪的是,上面的代码成功地解析了SQL“DROP VIEW testView”


你知道为什么它不会解析我的视图创建sql吗?谢谢

ParseStatementList用于分析批处理中或存储过程主体中的语句。语句,如CREATE VIEW(以及CREATE/ALTER proc、触发器、函数等)。必须是批处理中的唯一语句,因此不能包含在任何其他类型的语句列表中。这些语句将仅在批处理的语法规则中进行分析,因此ParseStatementList无法识别它们


为什么要在此处使用ParseStatementList而不是Parse或ParseBatch?

ParseStatementList用于分析批处理或存储过程主体中的语句。语句,如CREATE VIEW(以及CREATE/ALTER proc、触发器、函数等)。必须是批处理中的唯一语句,因此不能包含在任何其他类型的语句列表中。这些语句将仅在批处理的语法规则中进行分析,因此ParseStatementList无法识别它们

为什么要在此处使用ParseStatementList而不是Parse或ParseBatch