string AddSqlForVariables(string queryText) => Regex.Replace(queryText, @"\@\w+\b", match => { if (DeclareVariables.FirstOrDefault(nv => "@" + nv.Name == match.Value) != null) { return(AdvancedRecordset.GetVariableValue(match.Value)); } return(match.Value); });
void ExecuteRecordset(IDSFDataObject dataObject, int update) { var env = dataObject.Environment; AdvancedRecordset = new AdvancedRecordset(env); var iter = new WarewolfListIterator(); var started = false; var itemsToIterateOver = new Dictionary <string, IWarewolfIterator>(); var allTables = new List <string>(); if (DeclareVariables == null || DeclareVariables.All(d => String.IsNullOrEmpty(d.Value))) { ExecuteSql(update, allTables, ref started); } else { _recordsAffected = 0; foreach (var declare in DeclareVariables) { if (string.IsNullOrEmpty(declare.Value)) { continue; } var res = new WarewolfIterator(env.Eval(declare.Value, update)); iter.AddVariableToIterateOn(res); itemsToIterateOver.Add(declare.Name, res); } while (iter.HasMoreData()) { foreach (var item in itemsToIterateOver) { AddDeclarations(item.Key, iter.FetchNextValue(item.Value)); } ExecuteSql(update, allTables, ref started); started = true; } } foreach (var table in allTables) { AdvancedRecordset.DeleteTableInSqlite(table); } }
public override void ExplicitVisit(DeclareVariableStatement node) { DeclareVariables.Add(node); }