![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка по столбцу(Interbase) [D7, XP]
Гэби © (2008-09-04 12:51:00)Как осуществить выборку по определенному столбцу если данные в этом столбце имеют тип String?
По типу Integer делаю так:
IBQuery1.SQL.Add('SELECT * FROM STATION WHERE STATIONP = ' + edit9.Text + '');
заранее спс
Ega23 (2008-09-05 13:14:00) [1]
> Я всё потому, что Олег про quotedstr забыл ;-)
Не забыл я про него, пусть сначала ручками научится апостроф вставлять..
Плохиш (2008-09-05 13:03:00) [2]Нифигасе дискуссию развели 8-)
Я всё потому, что Олег про quotedstr забыл ;-)
Ega23 (2008-09-05 12:09:00) [3]
> После первого выполнения текущего коннекта хп кэшируется
> что позволяет ей еще более быстро выполнятся.
Обычный запрос, не оформленный как ХП тоже можно "скомпилировать".
Поиграйся со свойством ADODataSet.Prepared и посмотри профайлером, что летит на сервер.
> Но может действительно ХП MSSQL отличабтся от IB.
Кардинально. Для MSSQL я совершенно спокойно могу менять тип возвращаемого НД в рамках одной процедуры. В IB - строго один тип. Кстати, ИМХО, это одна из причин, почему в MSSQL нельзя Select from ХП сделать, а в IB - можно.
Правильный$Вася (2008-09-04 22:10:00) [4]
> хп хранящаяся на сервере хранится в отпарсином виде что
> позволяет более быстро ее обрабатывать
это имеет значение только для тех редких случаев, когда запрос не повторяется за длительный период времени
иначе будучи единожды распарсеным, он хранится в кэше сервера уже готовым
> так же не требуется слать по сети весь текст запроса
такой огромный объем, мама не горюй
больше 10 кб запроса даже автогенераторы редко крутят, а человек так и вовсе больше 50 строк не пишет
> Клиент цепляется лишь при изменении структуры входящих/исходящих
> данных что бывает редко,
ой ли? в сказке живешь...
stas (2008-09-04 21:54:00) [5]Правильный$Вася (04.09.08 17:59) [43]
Клиент цепляется лишь при изменении структуры входящих/исходящих данных что бывает редко, к тому же хп хранящаяся на сервере хранится в отпарсином виде что позволяет более быстро ее обрабатывать, а так же не требуется слать по сети весь текст запроса.
После первого выполнения текущего коннекта хп кэшируется что позволяет ей еще более быстро выполнятся.
Но может действительно ХП MSSQL отличабтся от IB.
Правильный$Вася (2008-09-04 17:59:00) [6]
> если у тебя 50 000 процедур,
нет, у меня столько нет, но было бы, если бы я на каждый запрос по процедуре писал
а раздать права на 500 таблиц уж куда проще, чем на 50000 процедур
про генераторы запросов я вообще не говорю, если уж юзеру приспичит
твой способ не оставляет никаких надежд ему
кстати, процедуры крайне редко меняются по одной, поэтому вероятность неприкосновенности клиента становится совсем микроскопической 0.05^N, где N - число одновременно изменяющихся процедур
так что весь теоретический плюс изменения бизнес-логики толькона сервере скатывается до небывало малой величины
stas (2008-09-04 17:46:00) [7]Правильный$Вася (04.09.08 16:43) [41]
если у тебя 50 000 процедур, то у тебя работает более 10 программеров, где гарантия что какой-то программер не натупит и не откроет возможность для Sql injection?
А в случае с ХП за этим следит сервер и 1-2 админа.
Опять же задачи бывают разные, разные степени безопасности и т.д.
поэтому считаю что спорить безсмысленно.
Правильный$Вася (2008-09-04 16:43:00) [8]
> stas © (04.09.08 16:38) [40]
это теория
на практике же изменение хранимой процедуры в 95% случаев влечет собой изменение клиента
а админить 50 тыс процедур уж очень больно вместо реально нужных 2-3 тыс
stas (2008-09-04 16:38:00) [9]Правильный$Вася (04.09.08 16:34) [38]
>>поддержки, доработки
то ли искать в проекте запрос изменять че-то перекомпиливать и выкладывать юзерам, то ли изменить хп на сервере.
Ega23 (2008-09-04 16:36:00) [10]
> но с точки зрения администрирования, поддержки, доработки
> лепить столько процедур - та хай меня покрасят
В том-то и фишка MSSQL, что можно создать одну процедуру вообще на всё.
Правильный$Вася (2008-09-04 16:34:00) [11]
> хочешь сказать что запрос написаный на клиенте легче для
> сервера и сети чем хранимая процедура?
с точки зрения выполнения они одинаковы
но с точки зрения администрирования, поддержки, доработки лепить столько процедур - та хай меня покрасят
Ega23 (2008-09-04 16:24:00) [12]
> о, то есть ты на КАЖДЫЙ запрос будешь писать ПО ПРОЦЕДУРЕ?
Ну, скажем, для MSSQL я имено так и делал. Только не по одной процедуре на запрос, а по одной на сущность (Insert, Update, Delete и Select). Просто MSSQL позволяет возвращать из ХП что угодно. В отличие от того же FB, где результирующий НД строго прописан.
stas (2008-09-04 16:23:00) [13]Правильный$Вася (04.09.08 16:19) [35]
т.е. ты хочешь сказать что запрос написаный на клиенте легче для сервера и сети чем хранимая процедура?
Правильный$Вася (2008-09-04 16:19:00) [14]
> обертки между собой соединять не надо это уже результирующий набор.
о, то есть ты на КАЖДЫЙ запрос будешь писать ПО ПРОЦЕДУРЕ?
гениально!
мне жалко твою базу и твоих клиентов
stas (2008-09-04 16:11:00) [15]Правильный$Вася (04.09.08 15:57) [29]
обертки между собой соединять не надо это уже результирующий набор.
Правильный$Вася (2008-09-04 16:05:00) [16]
> > ну, распределить права доступа
> как это делается?
CREATE ROLE
GRANT, REVOKE
Ega23 (2008-09-04 16:03:00) [17]
> как это делается?
Не слушай его, это делается совсем не так.
Гэби (2008-09-04 16:02:00) [18]
> ну, распределить права доступа. К таблицам вообще всем закрыть,
> а к хранимкам пользовательским открыть юзерам, админским
> - только админу.
как это делается?
Ega23 (2008-09-04 16:00:00) [19]
> подумай, что будет с производительностью при соединении
> в запросе нескольких таких оберток
Для этого View используются, ХП немного для другого предназначены.
З.Ы. Складывается впечатление, что он ничего кроме MSSQL не видел и не щупал.
Правильный$Вася (2008-09-04 15:57:00) [20]подумай, что будет с производительностью при соединении в запросе нескольких таких оберток