コード例 #1
0
        protected override void DoDiscoverWork(object sender, DoWorkEventArgs e)
        {
            string sql =
                @"SELECT O.object_name, O.created, O.last_ddl_time, O.status, S.text
    FROM dba_objects O
    JOIN dba_source S
      ON S.owner = O.owner
     AND S.name = O.object_name
     AND S.type = O.object_type
     AND S.line = 1
   WHERE O.owner = '" + schemaName + @"'
     AND O.object_type = 'PROCEDURE'
   ORDER BY O.object_name";

            Logger.WriteLine(sql);

            using (var cmd = new OracleCommand(sql, dbase.OraConnection))
            {
                try
                {
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Logger.WriteLine(reader.GetString(0));

                            var procedure = new SchemataProcedure(dbase, srvnode, reader.GetString(0));

                            procedure.AddProperty("Name", reader.GetString(0));
                            procedure.AddProperty("Created", reader.GetDateTime(1).ToString());
                            procedure.AddProperty("Last DDL Time", reader.GetDateTime(2).ToString());
                            procedure.AddProperty("Status", reader.GetString(3));

                            string preamble = reader.GetString(4).ToString().Trim().ToLower();
                            procedure.IsWrapped = preamble.Contains("wrapped");
                            procedure.AddProperty("Wrapped", procedure.IsWrapped ? "Yes" : "No");

                            if (reader.GetString(3) == "INVALID")
                            {
                                procedure.ForeColor = System.Drawing.Color.Red;
                            }

                            procedure.Nodes.Add(new TreeNode());

                            discoveries.Add(procedure);
                        }

                        reader.Close();
                    }
                }
                catch (Exception exc)
                {
                    River.Orqa.Dialogs.ExceptionDialog.ShowException(exc);
                }
            }
        }
コード例 #2
0
ファイル: SchemaManager.cs プロジェクト: stevencohn/Orqa
        private SchemataParameter[] FindProcParameters(
            string serverName, string schemaName, string procName)
        {
            SchemataProcedure procedure = null;

            SchemataServer server = FindServer(serverName);

            if (server != null)
            {
                SchemataSchema schema = server.FindSchema(schemaName);
                if (schema != null)
                {
                    procedure = schema.FindProcedure(procName);
                }
            }

            return(procedure == null ? new SchemataParameter[0] : procedure.Parameters);
        }
コード例 #3
0
        //========================================================================================
        // FindProcedure()
        //========================================================================================

        public SchemataProcedure FindProcedure(string procedureName)
        {
            if (!procedures.IsDiscovered)
            {
                procedures.DiscoverNow();
            }

            int  i     = 0;
            bool found = false;
            SchemataProcedure procedure = null;

            procedureName = procedureName.ToLower();

            while ((i < procedures.Nodes.Count) && !found)
            {
                procedure = (SchemataProcedure)procedures.Nodes[i];
                if (!(found = procedure.Text.ToLower().Equals(procedureName)))
                {
                    i++;
                }
            }

            return(found ? procedure : null);
        }
コード例 #4
0
ファイル: SchemataPackage.cs プロジェクト: stevencohn/Orqa
        //========================================================================================
        // Discover()
        //		If an inheritor allows discoveries (HasDiscovery == true), then the inheritor
        //		should override this method to propulate its Nodes collections.
        //========================================================================================

        internal override void Discover()
        {
            if (Logger.IsEnabled)
            {
                Logger.WriteSection(Text + " PROCEDURES");
            }

            Statusbar.Message = "Discovering package procedures...";

            Nodes.Clear();

            string sql =
                "SELECT owner, object_name, procedure_name"
                + " FROM all_procedures"
                + " WHERE owner='" + schemaName
                + "' AND object_name='" + Text
                + "' ORDER BY procedure_name";

            if (Logger.IsEnabled)
            {
                Logger.WriteLine(sql);
            }

            OracleCommand cmd = new OracleCommand(sql, dbase.OraConnection);

            try
            {
                OracleDataReader reader = cmd.ExecuteReader();

                if (reader.FieldCount == 0)
                {
                    // TODO: ((SchemaTree)this.TreeView).UnlockWindow();
                }
                else
                {
                    int               count = 1;
                    string            name  = null;
                    string            prev  = null;
                    SchemataProcedure proc;

                    while (reader.Read())
                    {
                        // Not sure why we soemtimes get null function names...
                        // They don't appear to relate to actual functions!
                        if (reader[2] != DBNull.Value)
                        {
                            name = reader.GetString(2);

                            Logger.WriteLine(schemaName + "." + name);

                            proc = new SchemataProcedure(dbase, srvnode, name);

                            proc.AddProperty("Name", name);
                            proc.AddProperty("Owner", reader.GetString(0));
                            proc.AddProperty("Object", reader.GetString(1));

                            if (name.Equals(prev))
                            {
                                count++;
                            }
                            else
                            {
                                count = 1;
                            }

                            proc.Overload = count;
                            prev          = name;

                            Nodes.Add(proc);
                        }
                    }
                }

                reader.Close();
                reader.Dispose();
                reader = null;

                Statusbar.Message = String.Empty;
            }
            catch (Exception exc)
            {
                River.Orqa.Dialogs.ExceptionDialog.ShowException(exc);
            }

            cmd.Dispose();
            cmd = null;

            isDiscovered = true;
        }