예제 #1
0
        /// <summary>
        /// <paramref name="spName"/>를 비동기 방식으로 실행하여, 결과 셋을 <see cref="Task{DataTable}"/>로 반환합니다.
        /// </summary>
        public static Task <OracleDataTable> ExecuteDataTableAsyncByProcedure(this EnterpriseLibrary.OracleDatabase oraDatabase,
                                                                              string spName,
                                                                              int firstResult,
                                                                              int maxResults,
                                                                              params IAdoParameter[] parameters)
        {
            spName.ShouldNotBeWhiteSpace("spName");

            var cmd = oraDatabase.GetProcedureOracleCommand(spName, AdoTool.DEFAULT_DISCOVER_PARAMETER);

            return
                (ExecuteDataTableAsync(oraDatabase, cmd, firstResult, maxResults, parameters)
                 .ContinueWith(task => {
                With.TryAction(() => cmd.Dispose());
                return task;
            },
                               TaskContinuationOptions.ExecuteSynchronously)
                 .Unwrap());
        }