Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Стандарт" для хранимой процедуры 
V
    Опции темы
namervasek
Дата 6.7.2012, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Есть много баз данных с разной архитектурой и разными серверами для хранения(Sql server, Oracle, Firebird и тд) 
Но во всех базах должна находится хранимая процедура которая имеет один стандрат.
Процедура должна возращать пять переменых при вызове... Две переменые целочисленые, две текстовые и последняя это время.
С целочислеными перемеными проблем нет (на всех серверах целочисленые типы примерно одинаковые)
А вот с датой и с текстом проблемы... В каждом сервере свои форматы и в каждом по разному все хранится.
Как возможное решение этой проблемы я решил, что строки и даты должны передаваться в виде массива байт.... 
И вот волнует правильное ли решения я выбрал.. может можно как то подрогуму? Подскажите пожалуста
 




PM MAIL   Вверх
Frees
Дата 6.7.2012, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



А почему нельзя в каждой СУБД хранить дату и текст так как принято в этой СУБД?

Это сообщение отредактировал(а) Frees - 6.7.2012, 14:00


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
namervasek
Дата 6.7.2012, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Мне не нужно делать реализацию этой процедуры, реализовывать будут другие... Мне не обходимо описать стандарт по которому они будут реализовавать эту процедуру.. При чем стандарт должен быть на все сервера.

Для ясности приведу пример:

Вот пример стандарта
Код

Процедура: ААА
Возращаемое значение: Byte(это паскалевский байт без знака)


В sql server:
  Разработчик этот стандарт прочитает и напишет в своей базе процедуру ААА которая вернет tinyint(это в sql server тоже самое, что Byte в паскале)
В MySQL:
  Типа Byte без знака вообще нет(я точно не уверен может он там и есть, но для примера пусть его там не будет)... И получается что разработчик уже не сможет реализовать стандарт




То есть в стандарте мне нужно указать такой тип который есть во всех серверах... Но если с целым числом это не проблема, то со строками и датами это довольно затруднительно.


Это сообщение отредактировал(а) namervasek - 6.7.2012, 14:40
PM MAIL   Вверх
Frees
Дата 6.7.2012, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



А не проще будет использовать потом использовать библиотеку доступа которая в клиентском приложении умеет работать сто всеми СУБД и приводить их в один вид для работы. ADO например.

Цитата(namervasek @  6.7.2012,  16:41 Найти цитируемый пост)
И вот волнует правильное ли решения я выбрал.. может можно как то подрогуму?

Определенно не правильное простое решение! 



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
namervasek
Дата 6.7.2012, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата

А не проще будет использовать потом использовать библиотеку доступа которая в клиентском приложении умеет работать сто всеми СУБД и приводить их в один вид для работы. ADO например.


Базы будут находится на отдаленых серверах и вполне возможно операционки на них будут разные. 
Клиентское приложение должно подключится к базе  выполнить процедуру и обработать результат... 

Цитата

Определенно не правильное простое решение! 

В каком плане оно не простое? 
Я понимаю что такая передача результата не совсем "красива", но такой метод универсален в плане типов данных... 
PM MAIL   Вверх
DarkProg
Дата 6.7.2012, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 1
Всего: 19



Цитата(namervasek @  6.7.2012,  16:11 Найти цитируемый пост)
В каком плане оно не простое? 

В том плане, что вы пытаетесь что-то вроде велосипеда изобрести... на крайняк храните всё в тексте, но если вдруг кому-нить моча стукнет в голову и они решат на винде поменять разделитель даты с "." например на "/", то при попытке преобразования вылетит милый эксепт на клиентском приложении.
Клиентские библиотеки для доступа к данным специально созданы для того чтобы пользователю данные представлялись в уже нормальном виде, а программисты могли абстрагироваться от того как там и что хранится в базе.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
namervasek
Дата 6.7.2012, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



DarkProg, 
Эм...
То есть если я скажем опишу такой стандарт

Код

Процедура: ААА
Возращаемое переменые: 
  1) Имя: CreateTime, Тип: дата и время
  2) Имя: Msg, Тип: строка


То какие бы разработчики типы строк и дат не употребляли  на клиентской стороне будет все норм?

PM MAIL   Вверх
Frees
Дата 6.7.2012, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(namervasek @  6.7.2012,  18:58 Найти цитируемый пост)
То какие бы разработчики типы строк и дат не употребляли  на клиентской стороне будет все норм?

В клиентском приложении (в случае с ADO) тебе будет не важно какой формат баты у той или иной СУБД, за это беспокоится библиотека доступа, и драйвер конкретной СУБД.



Цитата(namervasek @  6.7.2012,  18:11 Найти цитируемый пост)
Базы будут находится на отдаленых серверах и вполне возможно операционки на них будут разные. Клиентское приложение должно подключится к базе  выполнить процедуру и обработать результат... 

Не имеет значение на какой ОС будет крутится база.

Добавлено через 5 минут и 3 секунды
Цитата(namervasek @  6.7.2012,  18:11 Найти цитируемый пост)
В каком плане оно не простое? 

На сервере в процедуре придется конвертировать родной формат в ваш бинарный, а для этого не у всех СУБД хватит инструментов.


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
namervasek
Дата 6.7.2012, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Frees, ясно спасибо за помошь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.