/// <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); }
/// <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); }