示例#1
0
            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);
            }
示例#2
0
        /// <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);
        }