Как вернуть имя таблицы из хранимой процедуры в наборе данных - PullRequest
2 голосов
/ 10 мая 2010

Я использовал набор данных для хранения 15 таблиц, которые мне нужны во время загрузки. Когда я заполнил все таблицы, используя хранимую процедуру, он возвращает мне всю таблицу, но имя таблицы не совпадает с именем фактического имени таблицы в базе данных.

Он принимает всю таблицу с именем таблицы как Table1, Table2, Table3 ...

Я хочу, чтобы они были с тем же именем, что и в таблице.

SELECT PK_GUEST_TYPE, [DESCRIPTION] FROM L_GUEST_TYPE
SELECT PK_AGE_GROUP_ID, AGE_GROUP FROM L_AGE_GROUP
SELECT PK_COMPANY_ID, COMPANY_NAME FROM M_COMPANY
SELECT PK_COUNTRY_ID, COUNTRY FROM L_COUNTRY
SELECT PK_EYE_COLOR_ID, [DESCRIPTION] FROM L_EYE_COLOR
SELECT PK_GENDER_ID, [DESCRIPTION] FROM L_GENDER
SELECT PK_HAIR_COLOR_ID, [DESCRIPTION] FROM L_HAIR_COLOR
SELECT PK_STATE_PROVONCE_ID, [DESCRIPTION] FROM L_STATE_PROVINCE
SELECT PK_STATUS_ID, [DESCRIPTION] FROM L_STATUS

SELECT PK_TITLE_ID, [DESCRIPTION] FROM L_TITLE
SELECT PK_TOWER_ID, [DESCRIPTION] FROM M_TOWER
SELECT PK_CITY_ID, [DESCRIPTION] FROM L_CITY
SELECT PK_REGISTER_TYPE_ID, [DESCRIPTION] FROM L_REGISTER_TYPE

Вот мое кодирование внешнего интерфейса для заполнения набора данных.

             OpenConnection();
             adp.Fill(ds);
             CloseConnection(true);

Ответы [ 5 ]

2 голосов
/ 12 июня 2015

Может быть, это может быть обходной путь, добавив дополнительный столбец в возвращаемой таблице

Create procedure psfoo ()
AS
select * ,'tbA' as TableName from tbA
select * ,'tbB' as TableName from tbB

Тогда в коде C #

 foreach (DataTable dt in ds.Tables)
    {
        if (dt.Rows[0]["TableName"].ToString().Contains("tbA"))
        {

        }
        else if (dt.Rows[0]["TableName"].ToString().Contains("tbB"))
        {

        }
    }
2 голосов
/ 10 мая 2010
1 голос
/ 10 мая 2010

Я бы потратил время на использование набранного набора данных , что делает многое намного проще. Помните, что вы, вероятно, вернетесь к этому коду через месяц или три. :)

0 голосов
/ 20 апреля 2017

Отображение таблицы MS - полная шутка. В чем разница между

ds.Table(0)
ds.Table("Table")
ds.Table("Customer")

когда у нас нет гарантии порядка таблиц, возвращаемых в нашем приложении. Требуется совпадение STRONG-NAME .... См. Мое решение

0 голосов
/ 10 мая 2010

Первая (или последняя) таблица должна иметь meta таблицу имен таблиц в том же порядке, что и следующие (или предыдущие) таблицы.

...