/// <summary>
        /// Parse query result for two values.
        /// </summary>
        /// <param name="scriptInstance">script reference</param>
        /// <param name="attributeNames">attribute</param>
        /// <param name="queryOutput">Output</param>
        private static void DualValueHandler
            (WindowsOracleInstanceLMSRawDataDetailsScript scriptInstance, String attributeName, String queryOutput)
        {
            string        dbRole      = null;
            string        collectDate = null;
            StringBuilder logData     = new StringBuilder();
            string        output      = ExtractQueryOutput(attributeName, queryOutput);

            //
            // Never compile a regular expression is not assigned to
            // a static reference.  Otherwise you will leak an Assembly.
            Regex r = new Regex(@"<BDNA>lmsDBRole<BDNA>(.*?)<BDNA>lmsInstallDate<BDNA>(.*?)<BDNA>");

            foreach (String line in output.Split((new char[] { '\n', '\r' }), StringSplitOptions.RemoveEmptyEntries))
            {
                Match match = r.Match(line);
                if (match.Length > 1)
                {
                    dbRole      = match.Groups[1].ToString();
                    collectDate = match.Groups[2].ToString();
                    logData.AppendFormat("lmsDBRole: {0}, lmsInstallDate: {1}\n", dbRole, collectDate);
                    break;
                }
                else if (no_row_selected_pattern.IsMatch(line))
                {
                    string value = matchFirstGroup(line, no_row_selected_pattern);
                    logData.AppendLine("No rows selected.");
                    break;
                }
                else if (ora_error_pattern.IsMatch(line))
                {
                    string value = matchFirstGroup(line, ora_error_pattern);
                    logData.AppendLine("Oracle error..");
                }
            }
            Lib.Logger.TraceEvent(TraceEventType.Verbose,
                                  0,
                                  "Task Id {0}: Parse query results for attribute {1}:\n{2}",
                                  scriptInstance.m_taskId,
                                  attributeName,
                                  logData.ToString());
            if (!String.IsNullOrEmpty(dbRole))
            {
                scriptInstance.SaveCollectedData("lmsDBRole", dbRole);
            }
            if (!String.IsNullOrEmpty(collectDate))
            {
                scriptInstance.SaveCollectedData("lmsInstallDate", collectDate);
            }
        }
        /// <summary>
        /// Parse query result for Banner value.
        /// </summary>
        /// <param name="scriptInstance">script reference</param>
        /// <param name="attributeNames">attribute</param>
        /// <param name="queryOutput">Output</param>
        private static void BannerValueHandler
            (WindowsOracleInstanceLMSRawDataDetailsScript scriptInstance, String attributeName, String queryOutput)
        {
            StringBuilder result  = new StringBuilder();
            StringBuilder logData = new StringBuilder();
            string        output  = ExtractQueryOutput(attributeName, queryOutput);

            //
            // Never compile a regular expression is not assigned to
            // a static reference.  Otherwise you will leak an Assembly.
            Regex r = new Regex(@"<BDNA=>(.*?)<=BDNA>");

            foreach (String line in output.Split((new char[] { '\n', '\r' }), StringSplitOptions.RemoveEmptyEntries))
            {
                if (!line.Contains(@"BANNER"))
                {
                    Match match = r.Match(line);
                    if (match.Length > 1)
                    {
                        result.Append(match.Groups[1].ToString()).Append(@"\n");
                        logData.AppendFormat("{0}: {1}\n", attributeName, result.ToString());
                    }
                    else if (no_row_selected_pattern.IsMatch(line))
                    {
                        result.Append(matchFirstGroup(line, no_row_selected_pattern));
                        logData.AppendLine("No rows selected.");
                        break;
                    }
                    else if (ora_error_pattern.IsMatch(line))
                    {
                        result.Append(matchFirstGroup(line, ora_error_pattern));
                        logData.AppendLine("Oracle error..");
                    }
                }
            }
            Lib.Logger.TraceEvent(TraceEventType.Verbose,
                                  0,
                                  "Task Id {0}: Parse query results for attribute {1}:\n{2}",
                                  scriptInstance.m_taskId,
                                  attributeName,
                                  logData.ToString());
            if (result.Length > 0)
            {
                scriptInstance.SaveCollectedData(attributeName, result.ToString());
            }
        }