![]() |
|
|
![]()
|
|
| namervasek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.12.2007 Репутация: нет Всего: нет |
Есть много баз данных с разной архитектурой и разными серверами для хранения(Sql server, Oracle, Firebird и тд)
Но во всех базах должна находится хранимая процедура которая имеет один стандрат. Процедура должна возращать пять переменых при вызове... Две переменые целочисленые, две текстовые и последняя это время. С целочислеными перемеными проблем нет (на всех серверах целочисленые типы примерно одинаковые) А вот с датой и с текстом проблемы... В каждом сервере свои форматы и в каждом по разному все хранится. Как возможное решение этой проблемы я решил, что строки и даты должны передаваться в виде массива байт.... И вот волнует правильное ли решения я выбрал.. может можно как то подрогуму? Подскажите пожалуста |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
А почему нельзя в каждой СУБД хранить дату и текст так как принято в этой СУБД?
Это сообщение отредактировал(а) Frees - 6.7.2012, 14:00 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| namervasek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.12.2007 Репутация: нет Всего: нет |
Мне не нужно делать реализацию этой процедуры, реализовывать будут другие... Мне не обходимо описать стандарт по которому они будут реализовавать эту процедуру.. При чем стандарт должен быть на все сервера.
Для ясности приведу пример: Вот пример стандарта
В sql server: Разработчик этот стандарт прочитает и напишет в своей базе процедуру ААА которая вернет tinyint(это в sql server тоже самое, что Byte в паскале) В MySQL: Типа Byte без знака вообще нет(я точно не уверен может он там и есть, но для примера пусть его там не будет)... И получается что разработчик уже не сможет реализовать стандарт То есть в стандарте мне нужно указать такой тип который есть во всех серверах... Но если с целым числом это не проблема, то со строками и датами это довольно затруднительно. Это сообщение отредактировал(а) namervasek - 6.7.2012, 14:40 |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
А не проще будет использовать потом использовать библиотеку доступа которая в клиентском приложении умеет работать сто всеми СУБД и приводить их в один вид для работы. ADO например.
Определенно не правильное простое решение! -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| namervasek |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.12.2007 Репутация: нет Всего: нет |
Базы будут находится на отдаленых серверах и вполне возможно операционки на них будут разные. Клиентское приложение должно подключится к базе выполнить процедуру и обработать результат...
В каком плане оно не простое? Я понимаю что такая передача результата не совсем "красива", но такой метод универсален в плане типов данных... |
||||
|
|||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 1 Всего: 19 |
В том плане, что вы пытаетесь что-то вроде велосипеда изобрести... на крайняк храните всё в тексте, но если вдруг кому-нить моча стукнет в голову и они решат на винде поменять разделитель даты с "." например на "/", то при попытке преобразования вылетит милый эксепт на клиентском приложении. Клиентские библиотеки для доступа к данным специально созданы для того чтобы пользователю данные представлялись в уже нормальном виде, а программисты могли абстрагироваться от того как там и что хранится в базе. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| namervasek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.12.2007 Репутация: нет Всего: нет |
DarkProg,
Эм... То есть если я скажем опишу такой стандарт
То какие бы разработчики типы строк и дат не употребляли на клиентской стороне будет все норм? |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
В клиентском приложении (в случае с ADO) тебе будет не важно какой формат баты у той или иной СУБД, за это беспокоится библиотека доступа, и драйвер конкретной СУБД. Не имеет значение на какой ОС будет крутится база. Добавлено через 5 минут и 3 секунды На сервере в процедуре придется конвертировать родной формат в ваш бинарный, а для этого не у всех СУБД хватит инструментов. -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| namervasek |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 3.12.2007 Репутация: нет Всего: нет |
Frees, ясно спасибо за помошь
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |