private bool UpdateProcedureItem(ListViewItem item, PLSQLProcedure procedure, bool reloadExisting)
        {
            if (reloadExisting || existingPackage == null)
            {
                GetExistingPackage(lastReadPLSQLSpec.PackageName);
            }

            StoredProcedure storedProc = StoredProcedureHelper.CreateStoredProcedure(procedure);

            // Check if procedure is imported already
            bool isImported = (existingPackage != null &&
                               storedProc != null &&
                               existingPackage.Procedures.Where(p => p.Equals(storedProc)).Count() == 1);

            bool packageHasProcedureNameImported = (existingPackage != null &&
                                                    storedProc != null &&
                                                    existingPackage.Procedures.Where(p => p.ProcedureName == storedProc.ProcedureName).Count() > 0);


            ImportStoredProcedureWrapperClass wrapper = new ImportStoredProcedureWrapperClass();

            wrapper.StoredProcedure = procedure;
            wrapper.IsImported      = isImported;

            item.Text             = procedure.Name;
            item.SubItems[1].Text = procedure.Status.ToString();

            if (isImported)
            {
                item.SubItems[2].Text = "Imported";
            }
            else
            {
                if (packageHasProcedureNameImported)
                {
                    item.SubItems[2].Text = "Overloaded/Updated";
                }
                else
                {
                    item.SubItems[2].Text = "Not Imported";
                }
            }

            item.Tag = wrapper;

            if (procedure.Status != ProcedureStatus.Valid)
            {
                item.ForeColor = Color.OrangeRed;
            }
            else if (isImported)
            {
                item.ForeColor = Color.Green;
            }

            return(true);
        }
        private StoredProcedure GetStoredProcedureFromPLSQLProcedure(PLSQLProcedure procedure, string packageName)
        {
            StoredProcedure storedProc = null;

            if (procedure != null)
            {
                // Check if there are any ref cursors in the procedure parameters
                if (procedure.IsContainingRefCursor && !procedure.IsFunction)
                {
                    // Create ref cursor stored procedure
                    RefCurStoredProcedure proc = RefCurStoredProcedure.Create(procedure.Name, packageName, mySchema.ConnectionString);

                    // Check if procedure is valid
                    if (proc.Status == RefCurStoredProcedureStatus.Valid)
                    {
                        // Convert the RefCurStoredProcedure to a StoredProcedure
                        storedProc = StoredProcedureHelper.CreateStoredProcedure(procedure, proc);
                    }
                    else
                    {
                        string errorText = string.Format("Error when trying to import procedure {0} that has a Ref Cursor parameter!" + Environment.NewLine + Environment.NewLine, proc.Name) +
                                           string.Format("Status: {0}", proc.Status.ToString()) + Environment.NewLine + Environment.NewLine +
                                           proc.ErrorText;

                        MessageBox.Show(errorText, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    // Convert the PLSQLProcedure to a StoredProcedure
                    storedProc = StoredProcedureHelper.CreateStoredProcedure(procedure);
                }
            }

            return(storedProc);
        }