| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > "Стандарт" для хранимой процедуры |
| Автор: namervasek 6.7.2012, 13:41 |
| Есть много баз данных с разной архитектурой и разными серверами для хранения(Sql server, Oracle, Firebird и тд) Но во всех базах должна находится хранимая процедура которая имеет один стандрат. Процедура должна возращать пять переменых при вызове... Две переменые целочисленые, две текстовые и последняя это время. С целочислеными перемеными проблем нет (на всех серверах целочисленые типы примерно одинаковые) А вот с датой и с текстом проблемы... В каждом сервере свои форматы и в каждом по разному все хранится. Как возможное решение этой проблемы я решил, что строки и даты должны передаваться в виде массива байт.... И вот волнует правильное ли решения я выбрал.. может можно как то подрогуму? Подскажите пожалуста |
| Автор: Frees 6.7.2012, 14:00 |
| А почему нельзя в каждой СУБД хранить дату и текст так как принято в этой СУБД? |
| Автор: namervasek 6.7.2012, 14:38 | ||
| Мне не нужно делать реализацию этой процедуры, реализовывать будут другие... Мне не обходимо описать стандарт по которому они будут реализовавать эту процедуру.. При чем стандарт должен быть на все сервера. Для ясности приведу пример: Вот пример стандарта
В sql server: Разработчик этот стандарт прочитает и напишет в своей базе процедуру ААА которая вернет tinyint(это в sql server тоже самое, что Byte в паскале) В MySQL: Типа Byte без знака вообще нет(я точно не уверен может он там и есть, но для примера пусть его там не будет)... И получается что разработчик уже не сможет реализовать стандарт То есть в стандарте мне нужно указать такой тип который есть во всех серверах... Но если с целым числом это не проблема, то со строками и датами это довольно затруднительно. |
| Автор: namervasek 6.7.2012, 15:11 | ||||
Базы будут находится на отдаленых серверах и вполне возможно операционки на них будут разные. Клиентское приложение должно подключится к базе выполнить процедуру и обработать результат...
В каком плане оно не простое? Я понимаю что такая передача результата не совсем "красива", но такой метод универсален в плане типов данных... |
| Автор: DarkProg 6.7.2012, 15:26 |
В том плане, что вы пытаетесь что-то вроде велосипеда изобрести... на крайняк храните всё в тексте, но если вдруг кому-нить моча стукнет в голову и они решат на винде поменять разделитель даты с "." например на "/", то при попытке преобразования вылетит милый эксепт на клиентском приложении. Клиентские библиотеки для доступа к данным специально созданы для того чтобы пользователю данные представлялись в уже нормальном виде, а программисты могли абстрагироваться от того как там и что хранится в базе. |
| Автор: namervasek 6.7.2012, 15:58 | ||
| DarkProg, Эм... То есть если я скажем опишу такой стандарт
То какие бы разработчики типы строк и дат не употребляли на клиентской стороне будет все норм? |
| Автор: Frees 6.7.2012, 16:30 | ||||
В клиентском приложении (в случае с ADO) тебе будет не важно какой формат баты у той или иной СУБД, за это беспокоится библиотека доступа, и драйвер конкретной СУБД.
Не имеет значение на какой ОС будет крутится база. Добавлено через 5 минут и 3 секунды На сервере в процедуре придется конвертировать родной формат в ваш бинарный, а для этого не у всех СУБД хватит инструментов. |
| Автор: namervasek 6.7.2012, 16:43 |
| Frees, ясно спасибо за помошь |