private void OnInfoMessage(OracleInfoMessageEventArgs infoMessageEvent)
        {
            OracleInfoMessageEventHandler handler = (OracleInfoMessageEventHandler)Events[EventInfoMessage];

            if (null != handler)
            {
                handler(this, infoMessageEvent);
            }
        }
Example #2
0
        internal void OnInfoMessage(OracleInfoMessageEventArgs infoMessageEvent)
        {
            OracleInfoMessageEventHandler handler = (OracleInfoMessageEventHandler)base.Events[EventInfoMessage];

            if (handler != null)
            {
                handler(this, infoMessageEvent);
            }
        }
Example #3
0
        //========================================================================================
        // Execute()
        //		This is the thread worker routine.
        //========================================================================================

        private void Execute(object chassisObj)
        {
            Chassis chassis = (Chassis)chassisObj;

            if (UserOptions.RunStatistics)
            {
                chassis.queries.Statistics = new Statistics(dbase);
                chassis.queries.Statistics.Initialize();
            }

            var infoHandler  = new OracleInfoMessageEventHandler(CaptureInfoMessage);
            var stateHandler = new StateChangeEventHandler(CaptureStateChange);

            OracleConnection con = dbase.OraConnection;

            con.InfoMessage += infoHandler;
            con.StateChange += stateHandler;

            try
            {
                QueryCollection.Enumerator qe;

                while ((chassis.repeat-- > 0) && !isCancelled)
                {
                    qe = chassis.queries.GetEnumerator();
                    while (qe.MoveNext() && !isCancelled)
                    {
                        ExecuteQuery(query = qe.Current);

                        if (query.AffectedRecords > 0)
                        {
                            chassis.queries.TotalRecords += query.AffectedRecords;
                        }

                        chassis.queries.TotalTicks += query.Ticks;
                    }
                }

                if (UserOptions.RunStatistics)
                {
                    chassis.queries.Statistics.Summarize();
                }
            }
            finally
            {
                this.isExecuting = false;

                if (QueriesCompleted != null)
                {
                    QueriesCompleted(new QueriesCompletedEventArgs(chassis.queries));
                }

                con.InfoMessage -= infoHandler;
                con.StateChange -= stateHandler;
            }
        }
Example #4
0
        //========================================================================================
        // ExecuteProcedure()
        //		Called directly from the schema browser when opening a procedure; in which
        //		case the parameters list is generated from RunProcedureDialog.
        //		Also called from InvokeProcedure which grabs a SQL statement from the
        //		query window containing an EXEC command.
        //========================================================================================

        private void ExecuteProcedure(Query query)
        {
            var cmd = new OracleCommand();

            cmd.Connection     = dbase.OraConnection;
            cmd.CommandText    = query.SQL;
            cmd.CommandType    = CommandType.StoredProcedure;
            cmd.CommandTimeout = timeout;

            OracleParameter parameter;

            foreach (Parameter p in query.Parameters)
            {
                parameter = new OracleParameter();

                parameter.ParameterName = p.Name;
                parameter.OracleDbType  = p.DataType;
                parameter.Direction     = p.Direction;

                if (p.Value == System.DBNull.Value)
                {
                    parameter.Value = "null";
                }
                else
                {
                    parameter.Value = p.Value;
                }

                if ((p.Direction & (ParameterDirection.Output | ParameterDirection.ReturnValue)) > 0)
                {
                    if ((parameter.OracleDbType == OracleDbType.Char) ||
                        (parameter.OracleDbType == OracleDbType.NChar) ||
                        (parameter.OracleDbType == OracleDbType.Varchar2) ||
                        (parameter.OracleDbType == OracleDbType.NVarchar2))
                    {
                        // reserve enough space for most data!
                        parameter.Size = 1000;
                    }

                    query.HasOutputs = true;
                }

                cmd.Parameters.Add(parameter);
            }

            var infoHandler  = new OracleInfoMessageEventHandler(CaptureInfoMessage);
            var stateHandler = new StateChangeEventHandler(CaptureStateChange);

            dbase.OraConnection.InfoMessage += infoHandler;
            dbase.OraConnection.StateChange += stateHandler;

            try
            {
                ExecuteCommand(query, cmd);

                if (query.HasOutputs)
                {
                    for (int i = 0; i < cmd.Parameters.Count; i++)
                    {
                        parameter = cmd.Parameters[i];
                        if ((parameter.Direction &
                             (ParameterDirection.Output | ParameterDirection.ReturnValue)) > 0)
                        {
                            query.Parameters[i].Value = parameter.Value;
                        }
                    }
                }
            }
            catch (OracleException exc)
            {
                query.AddMessage(exc);

                if (exc.Message == String.Empty)
                {
                    Logger.WriteLine(exc.StackTrace);
                }
                else
                {
                    Logger.WriteLine(exc.Message);
                }
            }
            catch (Exception exc)
            {
                query.AddMessage(exc);

                if (exc.Message == String.Empty)
                {
                    Logger.WriteLine(exc.StackTrace);
                }
                else
                {
                    Logger.WriteLine(exc.Message);
                }
            }
            finally
            {
                dbase.OraConnection.InfoMessage -= infoHandler;
                dbase.OraConnection.StateChange -= stateHandler;
            }
        }