public static OracleSingleScript Create(string script) { script = (script ?? string.Empty).Trim().Trim(';').Trim(); if (string.IsNullOrWhiteSpace(script)) { return(null); } OracleSingleScript item = new OracleSingleScript(); item.SqlScript = script; item.IsSelect = script.StartsWith("SELECT", StringComparison.CurrentCultureIgnoreCase); if (!item.IsSelect) { item.IsInsert = script.StartsWith("INSERT", StringComparison.CurrentCultureIgnoreCase); if (!item.IsInsert) { item.IsUpdate = script.StartsWith("UPDATE", StringComparison.CurrentCultureIgnoreCase); if (!item.IsUpdate) { item.IsDelete = script.StartsWith("DELETE", StringComparison.CurrentCultureIgnoreCase); } } } return(item); }
/// <summary> /// Oracle 不支持 多条脚本 同时执行, 这里按照 ; 拆分脚本, 分次执行 /// </summary> private static List <OracleSingleScript> SplitOracleScript(string cmdText) { List <OracleSingleScript> listScript = new List <OracleSingleScript>(); if (string.IsNullOrWhiteSpace(cmdText)) { return(listScript); } if (!cmdText.Contains(";")) { OracleSingleScript singleScript = OracleSingleScript.Create(cmdText); if (singleScript != null) { listScript.Add(singleScript); } return(listScript); } string cmdTextTrim = cmdText.Trim().Trim(';').Trim(); if (cmdTextTrim.StartsWith("BEGIN", StringComparison.CurrentCultureIgnoreCase)) { cmdTextTrim = cmdTextTrim.Substring("BEGIN".Length); } if (cmdTextTrim.EndsWith("END", StringComparison.CurrentCultureIgnoreCase)) { cmdTextTrim = cmdTextTrim.Substring(0, cmdTextTrim.Length - "END".Length); } string[] splitTemp = cmdTextTrim.Split(new[] { ';' }, StringSplitOptions.None); List <string> listGroup = new List <string>(); foreach (string temp in splitTemp) { string tempTrim = temp.Trim(); //可以作为开头的 脚本 if (tempTrim.StartsWith("SELECT", StringComparison.CurrentCultureIgnoreCase) || tempTrim.StartsWith("INSERT", StringComparison.CurrentCultureIgnoreCase) || tempTrim.StartsWith("UPDATE", StringComparison.CurrentCultureIgnoreCase) || tempTrim.StartsWith("DELETE", StringComparison.CurrentCultureIgnoreCase) ) { if (listGroup.Count > 0) { string script = string.Join(";", listGroup).Trim().Trim(';').Trim(); OracleSingleScript singleScript = OracleSingleScript.Create(script); if (singleScript != null) { listScript.Add(singleScript); } listGroup.Clear(); } } listGroup.Add(temp); } if (listGroup.Count > 0) { string lastScript = string.Join(";", listGroup).Trim().Trim(';').Trim(); OracleSingleScript singleScript = OracleSingleScript.Create(lastScript); if (singleScript != null) { listScript.Add(singleScript); } listGroup.Clear(); } return(listScript); }