private List <ProcedureResultElement> GetStoredProcedureResultElements(SqlConnection connection, string schema, string name)
        {
            var dtResult = new DataTable();
            var result   = new List <ProcedureResultElement>();

            var sql = $@"exec dbo.sp_describe_first_result_set N'[{schema}].[{name}]';";

            var adapter = new SqlDataAdapter
            {
                SelectCommand = new SqlCommand(sql, connection)
            };

            adapter.Fill(dtResult);

            int rCounter = 0;

            foreach (DataRow res in dtResult.Rows)
            {
                var parameter = new ProcedureResultElement()
                {
                    Name      = string.IsNullOrEmpty(res["name"].ToString()) ? $"Col{rCounter}" : res["name"].ToString(),
                    StoreType = res["system_type_name"].ToString(),
                    Ordinal   = int.Parse(res["column_ordinal"].ToString()),
                    Nullable  = (bool)res["is_nullable"],
                };

                result.Add(parameter);

                rCounter++;
            }

            return(result);
        }
 public static Type ClrType(this ProcedureResultElement storedProcedureResultElement)
 {
     return(GetClrType(storedProcedureResultElement.StoreType, storedProcedureResultElement.Nullable));
 }
 public static SqlDbType DbType(this ProcedureResultElement storedProcedureResultElement)
 {
     return(GetSqlDbType(storedProcedureResultElement.StoreType));
 }