Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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 и IB
select * 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
14-1132653088
ildar_kh
2005-11-22 12:51
2006.01.01
События в JavaScript


1-1133797774
Andrey.Ru
2005-12-05 18:49
2006.01.01
В чем можно хранить готовый отчет QReport кроме bpl


2-1134452961
Alex_C
2005-12-13 08:49
2006.01.01
Определение строчки в RichEdit


1-1133514279
DimMih
2005-12-02 12:04
2006.01.01
Помещение компонентов в DBGrid


6-1127280679
VadimX
2005-09-21 09:31
2006.01.01
Как проверить анонимность прокси





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский