Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Select * from - порядок полей [MSSQL, Postgres]


Страницы:   1 2 3 4

Ega23 ©   (2008-05-20 12:19:00) 

А вот такой вопрос: ежели я делаю Select * from Table, то в каком порядке мне будут возвращены поля?
Т.е. может ли произойти ситуация, что порядок колонок поменялся, а реально изменения в структуру БД не вносились?


Игорь Шевченко   (2008-05-22 14:59:00) [1]

ANB   (22.05.08 14:42) [62]

"Кривое не может сделаться прямым".  (Еккл. 1, 16)

Встраивать механизм ловли огрехов разработчика на площадке заказчика - это слишком, гораздо проще организовать тестирование у разработчика, а у заказчика нехай программа падает с фейреверком максимальной яркости, разработчику проще будет понять причину.


ANB   (2008-05-22 14:42:00) [2]


> А то мы как-то справляемся версией, хотя изменения в структуре
> тоже наличествуют...

На одной моей работе я писал систему тестирования. Так вот одним из требований было проверять качество инсталляции версии.
Согласовали, что если структура данных и обязательные строки в справочниках совпадают с эталлоном, то все Ок. И таки раз в месяц эта штука ошибки инсталлятора для апгрейда версии ловила. То констрейнт забудут, то индекс, то поле. То назовут немного не так. И при этом у клиента и у базы проверялась версия. Кажный раз при старте.


Игорь Шевченко   (2008-05-22 13:05:00) [3]

Ega23 ©   (22.05.08 12:29) [59]

А какие аргументы приводит начальство ? А то мы как-то справляемся версией, хотя изменения в структуре тоже наличествуют...


ANB   (2008-05-22 12:45:00) [4]


> Но вот начальство говорит, что этого недостаточно (и, в
> общем-то, аргументировано говорит).

Правильно говорит. Но :
В любом случае намного надежнее прогулятся по словарю. Все достаточно тривиально как в оракле, так и в мс скл. Одна проблема - где хранить эталлонную структуру. Но это уже рабочий вопрос.


Ega23   (2008-05-22 12:29:00) [5]


> Версию структуры базы данных хранить и проверять религия
> не позволяет ?


Позволяет, это первое было, что я предложил. Но вот начальство говорит, что этого недостаточно (и, в общем-то, аргументировано говорит).


Игорь Шевченко   (2008-05-22 12:26:00) [6]

Ega23 ©   (22.05.08 12:19) [56]


> Тут вот какое дело: как говорил выше, делаю проверку структуры
> БД на соответствие релизу.


Версию структуры базы данных хранить и проверять религия не позволяет ?


Игорь Шевченко   (2008-05-22 12:24:00) [7]

ANB   (22.05.08 11:50) [54]


> Даже если надо достать только 20 полей записи, такое написание
> уже сильно сокращает код


Ну я же говорю - рука тянется к пистолету. Сокращение кода не есть самоцель.


> Писать правильно - значит писать быстро и наоборот.


Почему я работаю и моя работа оценивается - потому что остальные в нашей области "пишут быстро".


> Ты же сам ратовал за использование вьюх и FGA


"Всякий овощ приносит пользу, будучи употреблен надлежащим образом в надлежащее время".

В первую очередь я ратую за неизобретение велосипедов с четырьмя квадратным колесами - они, если и едут, то очень медленно, и сидеть на них во время езды больно.


Ega23   (2008-05-22 12:19:00) [8]

Тут вот какое дело: как говорил выше, делаю проверку структуры БД на соответствие релизу.
Соответственно, может сложиться такая ситуация, что в предыдущем релизе в таблице было 10 полей, а в новом - 8 (2 поля тупо были удалены). Если я буду проверять наличие конкретных 8 полей, то всё сработает "на ура" - эти поля есть, типы данных совпадают и т.п.
А вот если Select * from, то тогда я ещё и "лишние" поля получу (и буду знать, что их надо грохнуть).

Это как пример

З.Ы. Я прекрасно понимаю, что "можно все сделать по-другому". Например задать в условиях проверки удаленные столбцы с предыдущего релиза. Или через схему.
Я тупо пример привёл.


ANB   (2008-05-22 11:51:00) [9]


> Это просто оправдание лени.

Хороший программист - ленивый программист. :)


ANB   (2008-05-22 11:50:00) [10]


> Игорь Шевченко ©   (21.05.08 22:26) [49]

Даже если надо достать только 20 полей записи, такое написание уже сильно сокращает код - нужна только одна переменная.
При этом частенько заранее неизвестно, сколько точно полей тебе понадобится.

Писать правильно - значит писать быстро и наоборот.


> при этом вместо таблицы использовалось view с соединением
> 6 таблиц

Ты же сам ратовал за использование вьюх и FGA


Anatoly Podgoretsky   (2008-05-22 07:43:00) [11]

> Petr V. Abramov  (22.05.2008 00:29:51)  [51]

Это просто оправдание лени.


Германн   (2008-05-22 01:07:00) [12]


> Игорь Шевченко ©   (21.05.08 22:26) [49]

> хватаюсь за пистолет.

Хм. Игорь, это высказывание дурно попахивает некоей цитатой периода второй половины 30-х годов прошлого века!
:)


Petr V. Abramov   (2008-05-22 00:29:00) [13]


> Игорь Шевченко ©   (21.05.08 22:26) [49]


> хватаюсь за пистолет.

спили мушку :)))
в ситуации, когда 99 полей, и  из них нужно 98, самое оно.
но такое бывает редко.
так что в принципе согласен.
но все же мушку в данном вопросе на всякий случай лучше спилить :)))


palva   (2008-05-21 23:39:00) [14]


> А я хотел только уволить, вот помните мою доброту.

Это не доброта, это попытка нанести ущерб конкурирующей фирме.


Игорь Шевченко   (2008-05-21 22:26:00) [15]

ANB   (21.05.08 14:31) [48]


>
> Предложи недурной вариант.


Не могу - не знаю задачи.

Видел много разных вариантов, когда для того, чтобы достать значение одного поля, объявляли конструкцию [46], при этом вместо таблицы использовалось view с соединением 6 таблиц. Разработчик поступил, "как ему проще" - есть готовое view, значит его надо использовать. А то, что выполняться это будет на порядок дольше - ну и фиг с ним.
Я всегда, видя select * практически в любой интерпретации, будь то в серверной части, будь то в клиентской, хватаюсь за пистолет.


ANB   (2008-05-21 14:31:00) [16]


> дурное дело нехитрое

Предложи недурной вариант.


Игорь Шевченко   (2008-05-21 13:01:00) [17]


> Разве тут * - не самое уместное решение ?


дурное дело нехитрое


ANB   (2008-05-21 11:37:00) [18]

Насчет использования * и расстрела.

declare
 R_Table1 Table1%rowtype;
begin
 select * into R_Table1 from Table1 where ID = p_ID;
 ...
 Дальнейшее использование записи из таблицы Table1
 ...
end;

Разве тут * - не самое уместное решение ?


Anatoly Podgoretsky   (2008-05-21 10:25:00) [19]

> Ega23  (21.05.2008 10:16:44)  [44]

Вопрос не полностью освещен, но OpenScheme это минимальный деноминатор (костыль в АДО), а правильно использовать INFORMATION_SCHEME - это и по стандарту и не зависит от технологий, и возможности пошире. Это полные метаданные по всей базе и работать с ними просто, без отличия от обычной работы, просто SELECT


Ega23   (2008-05-21 10:16:00) [20]


> А чего ни будь приличное использовать не хочешь, например
> OpenScheme


Может и хочу. Я пока ещё не определился. Эта работа следующим этапом будет, я сейчас "почву зондирую"...


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо