public static (Enum.RetSqlFunction, DataSet ResultDataSet) AbreResultAdapter(string strSql, OracleConnection cnConexao, bool HideMsgErro = true)
        {
            RetSqlFunction    iResultado    = RetSqlFunction.retSQLEmpty;
            OracleDataAdapter ResultAdapter = new OracleDataAdapter();
            DataSet           ResultDataSet = new DataSet("ResultadoAdapter");

            try
            {
                ResultAdapter.SelectCommand = new OracleCommand(strSql, cnConexao);
                ResultAdapter.Fill(ResultDataSet, "ResultadoAdapter");
                if (ResultDataSet.Tables["ResultadoAdapter"].Rows.Count > 0)
                {
                    iResultado = Enum.RetSqlFunction.retSQLOk;
                }
                ResultAdapter.Dispose();
            }
            catch (OracleException ex)
            {
                ManipulaErro.MostraErro("AbreResultAdapter(): ", ex.GetHashCode(), ex.Message, HideMsgErro);
                ManipulaErro.LogarMensagem("AbreResultAdapter(): ", ex.GetHashCode(), ex.Message);
                iResultado = RetSqlFunction.retSQLError;
            }
            return(iResultado, ResultDataSet);
        }
        /*  public static OracleDataReader Consulta(string strSql)
         * {
         *    CnConexaoDll conexao = new CnConexaoDll();
         *    OracleCommand cmd = new OracleCommand();
         *    OracleDataReader readerResult = null;
         *
         *    try
         *    {
         *        cmd.CommandText = strSql;
         *        cmd.Connection = ;
         *        readerResult = cmd.ExecuteReader();
         *        return readerResult;
         *    }
         *    catch (OracleException ex)
         *    {                string errorMessage = "Código : " + ex.ErrorCode + "\n" + "Mensagem: " + ex.Message;
         *        return readerResult;
         *    }
         * } */

        public static RetSqlFunction SqlError(OracleException Erro, bool blHideMsg = false)
        {
            string         strMsg;
            RetSqlFunction SqlError = RetSqlFunction.retSQLEmpty;

            switch (Erro.Errors.GetHashCode())
            {
            case 12154:
            case 12224:
                strMsg   = "Falha na Conexão !";
                SqlError = RetSqlFunction.retSQLErrorReconnect;
                break;

            case 1017:
                strMsg   = "Usuário/Senha inválida !";
                SqlError = RetSqlFunction.retInvalidUserPwd;
                break;

            case 1031:
                strMsg   = "Privilégios insuficientes !";
                SqlError = RetSqlFunction.retSQLError;
                break;

            case 942:
                strMsg   = "Tabela inexistente ou privilégios insuficientes !";
                SqlError = RetSqlFunction.retSQLError;
                break;

            case 2627:
            case 1:
                strMsg   = "Registro já cadastrado !";
                SqlError = RetSqlFunction.retSQLDuplicatePK;
                break;

            case 547:
            case 2292:
                strMsg   = "Registro não pode ser excluído! Existe alguma referência para a informação.";
                SqlError = RetSqlFunction.retSQLError;
                break;

            case 54:
                strMsg   = "Registro já selecionado por outro usuário !";
                SqlError = RetSqlFunction.retSQLErrorLocked;
                break;

            case 3113:
            case 3114:
            case 3146:
            case 12571:
            case 12570:
            case 3151:
                strMsg = "Não foi possível completar sua solicitação. Tente novamente !";

                /*If TransactionInProgress Then
                 *  HidestrMsg = False
                 * Else
                 *  HidestrMsg = True
                 * End If*/
                SqlError = RetSqlFunction.retSQLErrorReconnect;
                break;

            case 1013:      //'TimeOut
                strMsg   = "Não foi possível completar sua solicitação. Tente novamente !";
                SqlError = RetSqlFunction.retSQLErrorTimeOut;
                break;

            case 1631:
                strMsg   = "Número máximo de registro na Tabela excedido!";
                SqlError = RetSqlFunction.retSQLError;
                break;

            case 2396:
                //exceeded maximum idle time, please connect again
                strMsg = "Não foi possível completar sua solicitação. Tente novamente !";

                /*If TransactionInProgress Then
                 *  HidestrMsg = False
                 * Else
                 *  HidestrMsg = True
                 * End If*/
                SqlError = RetSqlFunction.retSQLErrorReconnect;
                break;

            case 28:      //'Sessão cancelada
                strMsg = "Não foi possível completar sua solicitação. Tente novamente !";

                /*If TransactionInProgress Then
                 *  HidestrMsg = False
                 * Else
                 *  HidestrMsg = True
                 * End If*/
                SqlError = RetSqlFunction.retSQLErrorReconnect;
                break;

            default:
                strMsg   = Erro.Message;
                SqlError = RetSqlFunction.retSQLError;
                break;
            }

            if (!blHideMsg && !strMsg.Equals(""))
            {
                ManipulaErro.MostraErro(strMsg, Erro.ErrorCode, "", true);
            }
            else if (!blHideMsg)
            {
                if (Erro.Errors.GetHashCode().Equals(40071))
                {
                    SqlError = RetSqlFunction.retSQLError;
                    strMsg   = "Não foi possível completar sua conexão com a base do Detran. \n" +
                               "As operações remotas não serão realizadas!";
                    SqlError = RetSqlFunction.retSQLError;
                    ManipulaErro.MostraErro(strMsg, Erro.ErrorCode, "", true);
                    return(SqlError);
                }

                ManipulaErro.MostraErro(Erro.Message, Erro.ErrorCode, "", true);
                SqlError = RetSqlFunction.retVBError;
            }

            return(SqlError);
        }