Форум: "Базы";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизПоддержка драйверами СУБД языка SQL92 Найти похожие ветки
← →
Alex-- (2005-11-07 14:54) [0]Мастера! Существуют ли драйвера доступа к данным различных СУБД (ORACLE, MSSQL, IB и т.д.) без различия синтаксиса SQL. Например что бы выборка из функций имела одинаковый синтаксис. Хотелось бы по стандарту SQL92.
← →
Anatoly Podgoretsky © (2005-11-07 15:03) [1]А какой уровень SQL92 ты имеешь в виду.
← →
Alex-- (2005-11-07 15:09) [2]Есть функции возврощающие таблицы данных (в разных БД). Так вот что бы синтаксис выборки был одинаков типа "
Select Id, Name from MyFunction where Name = "Пупкин П.П."
"
← →
Nikolay M. © (2005-11-07 15:10) [3]А с каких это пор "драйвера доступа к данным" (термин тот еще, надеюсь, я его понял :) ) имеют что-то общее со стандартом SQL?
Пиши по стандарту ANSI - есть надежда, что почти везде будет работать, но этот геморрой не стоит свеч, имхо.
← →
Alex-- (2005-11-07 15:11) [4]Так точнее
Select Id, Name from MyFunction(параметры..) where Name = "Пупкин П.П."
← →
Alex-- (2005-11-07 15:19) [5]например в Oracle выглядит так
select * from TABLE (GET_Vhh_CONSUMER(:IDG, :IDCM, :FDATE, :LDATE)) t
в MSSQL и IBselect * from GET_Vhh_CONSUMER(:IDG, :IDCM, :FDATE, :LDATE)
← →
Alex-- (2005-11-07 15:34) [6]Хочется универсальности на уровне SQL
← →
evvcom © (2005-11-07 15:36) [7]
> например в Oracle выглядит так
Ну вот, знаешь как выглядит это в различных СУБД, и задаешь такие вопросы. Пора бы знать, что "драйвера доступа к данным различных СУБД" собственно не выполняют и не разбирают твой запрос, а передают его серверу в таком виде, в каком ты его подготовил. А "понимать" запрос - это уже дело сервера. И претензии по поводу того, что в различных серверах по-разному реализованы те или иные возможности, надо направлять разработчикам этих серверов, а не разработчикам "драйверов".
← →
Anatoly Podgoretsky © (2005-11-07 15:52) [8]Alex-- (07.11.05 15:34) [6]
Вопрос об уровне ANSI SQL 92 так и умапчиваешь, все три уровня наверно не одна база не держит.
← →
Alex-- (2005-11-07 16:05) [9]Про уровень ANSI SQL 92 не знаю, просвети.
← →
Anatoly Podgoretsky © (2005-11-07 16:14) [10]Их три, самый нижний поддерживают практически все, но он сильно ограниченый, самый старший практически никто не поддерживает.
Это означает, что переносимость можно обеспечить и то под вопросом, только по самому нижниму уровню совместимости.
← →
Ega23 © (2005-11-07 17:09) [11]А разве понятие "функция" входит в SQL92?????
← →
Alex-- (2005-11-08 08:18) [12]Понятие "функция" в SQL92 может и не входит. Вопрос был о наличии инифицированного описания запросов для различных БД, а не о соответствия запросов конкретно SQL92.
← →
ANB © (2005-11-08 15:27) [13]
> Alex-- (08.11.05 08:18) [12]
даже left join у MS SQL и Oracle8 по разному пишутся. А чем дальше в фичи - тем больше разницы. Прокатит везде только выборка из таблиц по одной типа select * from. Но для нормальных приложений - это тормоза, неудобство и пожирание ресурсов.
ЗЫ. Интересно - а что за задача ?
← →
Alex-- (2005-11-09 09:00) [14]>ANB © (08.11.05 15:27) [13]
>Но для нормальных приложений - это тормоза, неудобство и пожирание
>ресурсов.
Тормоза и пожирание ресурсов - согласен. Насчет неудобства, это с какой стороны смотреть. В моем случае универсальность важнее. Задача тривиальна. Есть комплекс средств сбора, учета и контроля потребленной электоэнергии на IB6.5.
Необходима поддержка Oracle и MSSQL. Варианты: вести отдельный софт для каждой БД (отсекается сразу), писать вилки в зависимости от базы (некрасиво).
← →
Johnmen © (2005-11-09 09:27) [15]Если использовать "универсальный" "движок" (типа dbExpress) и не использовать специфических особенностей реализации SQL для конкретной СУБД, то всё может у тебя получится.
Но тогда надо рассчитывать на возможное появление тормозов там, где их можно было бы легко избежать.
← →
YuRock © (2005-11-09 09:46) [16]
> писать вилки в зависимости от базы (некрасиво)
Вилки можно довольно красиво обернуть в десяток своих оберток, у которых "разветвления с небольшими модернизациями :)" будут внутри, вызовы их - всегда одинаковы. По-крайней мере, так более-менее решатся проблемы:
join"ов,
курсоров, возвращаемых хп,
получения айдишников
и т.д.
Думаю - так можно сделать более-менее красивую дрянь. Правда со скриптами баз ты уже ниччё не сделаешь :))
>
> А разве понятие "функция" входит в SQL92?????
Понятие "функция" не входит даже в FB 1.5., стремящийся поддерживать SQL99.
> этот геморрой не стоит свеч, имхо.
Не согласен. Для той же 1С-ины иногда Oracle бы не помешал, а иногда - FB - был бы идеальным вариантом. Но...
← →
Ega23 © (2005-11-09 09:51) [17]
> вести отдельный софт для каждой БД (отсекается сразу), писать
> вилки в зависимости от базы (некрасиво).
>
Вариант третий - трёхзвенка. Приложение должно "разговаривать" на языке бизнес-правил. А вот интерпритатор этого языка (ApplicationServer) уже должен сам решать, к какой БД и на каком диалекте SQL ему обратиться.
← →
Johnmen © (2005-11-09 09:51) [18]>YuRock © (09.11.05 09:46) [16]
>> А разве понятие "функция" входит в SQL92?????
>Понятие "функция" не входит даже в FB 1.5., стремящийся поддерживать SQL99.
Странно... Есть, но не входит...
← →
YuRock © (2005-11-09 09:52) [19]> Johnmen
Ну я имел в виду хранимая :)
← →
Zacho © (2005-11-09 09:57) [20]Alex-- (09.11.05 9:00) [14]
Необходима поддержка Oracle и MSSQL. Варианты: вести отдельный софт для каждой БД (отсекается сразу), писать вилки в зависимости от базы (некрасиво).
Именно эти варианты самые оптимальные. Иначе получшь тормозное глюкало. Или не тормозное, но глюкало. Или не глюкало, но тормозное.
Не веришь - проверь :)
Слишком уж разные РСУБД, с кардинально разной архитектурой.
Впрочем, про вполне работоспособные "универсальные" системы IB-Oracle я слышал. Даже есть "гибрид" этих РСУБД - fyracle ( http://www.janus-software.com/fb_fyracle.html ). А вот все известные мне попытки сделать "универсальное" приложение IB - MS SQL были неудачными.
← →
Johnmen © (2005-11-09 10:01) [21]>YuRock © (09.11.05 09:52) [19]
>Ну я имел в виду хранимая :)
Хранимая функция? Так есть же. Она называется ХП. :)
И причём тут упомянутая поддержка SQL99? Я не понял....
← →
Sergey13 © (2005-11-09 10:16) [22]Если бы этим занимался я (а я таким не занимался ни разу 8-), то я бы попробовал нечто вроде такого.
Сосредоточить все базозависимое в отдельных модулях проекта. Типа всю обработку данных в датамодуль. Эти модули должны быть созданы на каждую поддерживаемую БД. Для сборки проги на конкретную БД просто подключить свой специфический модуль.
В общем типа базозаточенного апп-сервера, только внутри клиента.
← →
YuRock © (2005-11-09 10:18) [23]
> Хранимая функция? Так есть же. Она называется ХП. :)
Ну, это я уже слышал где-то :)
Интересно, как Вы на процедурах напишите, скажем, такое:
SELECT
FUNC1( FIELD1 ) * FUNC2( FIELD2 ) * FUNC3( FIELD3 ) * FUNC4( FIELD4 ) * FUNC5( FIELD5 )
FROM TABLE1
Наверное, так? :
SELECT
SP1.FIELD1 * SP2.FIELD2 * SP3.FIELD3 * SP4.FIELD4 * SP5.FIELD5
FROM TABLE1
LEFT JOIN FUNC1( FIELD1 ) SP1
LEFT JOIN FUNC1( FIELD2 ) SP2
LEFT JOIN FUNC1( FIELD3 ) SP3
LEFT JOIN FUNC1( FIELD4 ) SP4
LEFT JOIN FUNC1( FIELD5 ) SP5
А вложенности какие могут быть? Разница очень существенная. ХФ можно использовать для операций с полями запроса, процедуры - нет. И это часто ОЧЕНЬ неудобно.
> И причём тут упомянутая поддержка SQL99? Я не понял....
Все, не при чем - просто не заметил, что это в предложении А разве понятие "функция" входит в SQL92????? перед словом "входит" нет слова "не" - думал, это автор написал.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.032 c