/// <summary>
        /// Gera procedure do GDA.
        /// </summary>
        /// <param name="queryInfo">Informações da procedure.</param>
        /// <param name="outputParametersIndexes">Índices de parâmetros de saída.</param>
        /// <returns>Retorna a procedure em um objeto do tipo <see cref="GDAStoredProcedure"/></returns>
        protected override GDAStoredProcedure GenerateGDAStoredProcedure(QueryInfo queryInfo, out IEnumerable <int> outputParametersIndexes)
        {
            var indexes             = new List <int>();
            var storedProcedureName = (TranslatedStoredProcedureName)Translator.GetName(queryInfo.StoredProcedureName);
            var procedure           = new GDAStoredProcedure(!string.IsNullOrEmpty(storedProcedureName.Schema) ? string.Format("\"{0}\".\"{1}\"", storedProcedureName.Schema, storedProcedureName.Name) : string.Format("\"{0}\"", storedProcedureName.Name));

            for (int i = 0; i < queryInfo.Parameters.Count; i++)
            {
                var paramDirection = (System.Data.ParameterDirection)((int)queryInfo.Parameters[i].Direction);
                procedure.AddParameter(":" + (i + 1), queryInfo.Parameters[i].Value, paramDirection);
                if (queryInfo.Parameters[i].Direction != ParameterDirection.Input)
                {
                    indexes.Add(i);
                }
            }
                        #if DEVART
            procedure.AddParameter(new GDAParameter(":" + (queryInfo.Parameters.Count + 1), null)
            {
                Direction    = System.Data.ParameterDirection.Output,
                NativeDbType = Devart.Data.Oracle.OracleDbType.Cursor
            });
#else
            procedure.AddOutputParameter(":" + (queryInfo.Parameters.Count + 1), (System.Data.DbType) 13);
                        #endif
            outputParametersIndexes = indexes;
            return(procedure);
        }
        protected override GDAStoredProcedure GenerateGDAStoredProcedure(QueryInfo a, out IEnumerable <int> b)
        {
            var c = new List <int> ();
            var d = (TranslatedStoredProcedureName)Translator.GetName(a.StoredProcedureName);
            var e = new GDAStoredProcedure(!string.IsNullOrEmpty(d.Schema) ? string.Format("\"{0}\".\"{1}\"", d.Schema, d.Name) : string.Format("\"{0}\"", d.Name));

            for (int f = 0; f < a.Parameters.Count; f++)
            {
                var g = (System.Data.ParameterDirection)((int)a.Parameters [f].Direction);
                e.AddParameter(":" + (f + 1), a.Parameters [f].Value, g);
                if (a.Parameters [f].Direction != ParameterDirection.Input)
                {
                    c.Add(f);
                }
            }
                        #if DEVART
            e.AddParameter(new GDAParameter(":" + (a.Parameters.Count + 1), null)
            {
                Direction    = System.Data.ParameterDirection.Output,
                NativeDbType = Devart.Data.Oracle.OracleDbType.Cursor
            });
#else
            e.AddOutputParameter(":" + (a.Parameters.Count + 1), (System.Data.DbType) 13);
                        #endif
            b = c;
            return(e);
        }
        /// <summary>
        /// Retorna o parâmetro correspondente a chave primária
        /// </summary>
        /// <param name="transaction">Transação.</param>
        /// <param name="entityName">Nome da entidade</param>
        /// <returns>Pâremetro correspondente a chave primária</returns>
        public object GetPrimaryKey(IPersistenceTransactionExecuter transaction, string entityName)
        {
            var metadata                 = _typeSchema.GetTypeMetadata(entityName);
            var identityMetadata         = metadata.GetKeyProperties().FirstOrDefault();
            GDAStoredProcedure procedure = new GDAStoredProcedure("control.GetIdentityProcedure");

            procedure.AddParameter("?schemaname", metadata.TableName.Schema);
            procedure.AddParameter("?tablename", metadata.TableName.Name);
            procedure.AddParameter("?columnname", identityMetadata.ColumnName);
            using (GDASession session = new GDASession(GDASettings.GetProviderConfiguration(ProviderName)))
            {
                var da = new DataAccess();
                return(da.ExecuteScalar(session, procedure));
            }
        }
        /// <summary>
        /// Gera uma StoredProcedure do GDA.
        /// </summary>
        /// <param name="queryInfo">Informações da procedure.</param>
        /// <param name="outputParametersIndexes">Índices de parâmetro de output.</param>
        /// <returns>Retorna StoredProcedure do GDA.</returns>
        protected virtual GDAStoredProcedure GenerateGDAStoredProcedure(QueryInfo queryInfo, out IEnumerable <int> outputParametersIndexes)
        {
            var indexes             = new List <int>();
            var storedProcedureName = (TranslatedStoredProcedureName)Translator.GetName(queryInfo.StoredProcedureName);
            var procedure           = new GDAStoredProcedure(!string.IsNullOrEmpty(storedProcedureName.Schema) ? string.Format("{0}.{1}", storedProcedureName.Schema, storedProcedureName.Name) : storedProcedureName.Name);

            procedure.CommandTimeout = queryInfo.CommandTimeout;
            for (int i = 0; i < queryInfo.Parameters.Count; i++)
            {
                var value = queryInfo.Parameters[i].Value;
                if (value is QueryInfo || value is Queryable)
                {
                    value = null;
                }
                var paramDirection = (System.Data.ParameterDirection)((int)queryInfo.Parameters[i].Direction);
                procedure.AddParameter(queryInfo.Parameters[i].Name, value, paramDirection);
                if (queryInfo.Parameters[i].Direction != ParameterDirection.Input)
                {
                    indexes.Add(i);
                }
            }
            outputParametersIndexes = indexes;
            return(procedure);
        }
Esempio n. 5
0
        /// <summary>
        /// Cria a procedure.
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        protected virtual GDAStoredProcedure CreateProcedure(PersistenceAction action)
        {
            var procedure = new GDAStoredProcedure((!string.IsNullOrEmpty(action.StoredProcedureName.Schema) ? string.Format("\"{0}\".\"{1}\"", action.StoredProcedureName.Schema, action.StoredProcedureName.Name) : string.Format("\"{0}\"", action.StoredProcedureName.Name)));

            return(procedure);
        }