![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамически изменяемый запрос из Хранимой процедуры [D5, MSSQL]
pic509 © (2006-08-28 10:32:00)Люди, подскажите решение следующей задачи:
На сервере MSSQL 2000 я храню таблицу, которая закрыта по выборке для клиентов БД. Для организации доступа к ней я использую Хранимую процедуру. Вся проблема в том, что мне нужно формировать запрос с изменяемыми условиями выборки (передаются как параметры к ХП), например за определенный диапазон дат и (или) по определенному полю и т.п. Я пытался формитровать запрос как строковую переменную, а затем запускать ее EXEC(str). Но в этом случае на клиентской машине срабатывает запрет на выборку. Как еще можно сформировать динамически изменяемый запрос в ХП ???
saxon (2006-08-28 12:00:00) [1]Не совсем понятно что есть - > Динамически изменяемый запросили - > запрос с изменяемыми условиями выборки? Когда он/они меняются?
Если имееться ввиду, что могут приходить по разному проинициализированные параметры, и в зависимости от этого ... ?
Можно предложить такой вариант :
create procedure Proc1
(
@pID integer = null,
...
)
as
...
select * from Table1 (nolock) where ((@pID is null) or (Table1.ID = @pID) ...
go
pic509 (2006-08-28 11:50:00) [2]ОГРОМНОЕ СПАСИБО EGA23 !!! Проверил - заработало !!!
Ega23 (2006-08-28 11:43:00) [3]
> Нельзя, но можно построить нормальный запрос.
А, в этом смысле... Понял...
Неясно, правда, что это за архитектура таблиц и пермишенов у автора. Подозрения накладывает...
Fay (2006-08-28 11:36:00) [4]2 Ega23 © (28.08.06 11:28) [10]
Нельзя, но можно построить нормальный запрос.
Ega23 (2006-08-28 11:28:00) [5]
> Возможно, стоит воспользоваться view
>
Разве во View можно параметры передать?
Ega23 (2006-08-28 11:20:00) [6]
> разве VIEW работает на MSSQL 2000?
Аж поперхнулся...
ANB (2006-08-28 11:12:00) [7]
> pic509 © (28.08.06 11:09) [6]
> разве VIEW работает на MSSQL 2000?
Имхо. Интересно, в какой из приличных СУБД view не работает ?
Fay (2006-08-28 11:10:00) [8]2 pic509 © (28.08.06 11:09) [6]
Есть не так мгого вещей, которыу там не работают.
Чисто по приколу, почитай BOL.
pic509 (2006-08-28 11:09:00) [9]разве VIEW работает на MSSQL 2000?
ANB (2006-08-28 10:55:00) [10]
> т.к. таких выборок клиентская машина должна выполнить как
> минимум несколько 10'000,
Чтобы показать одну форму ? Тогда при любом методе сервер ляжет.
Fay (2006-08-28 10:51:00) [11]2 pic509 © (28.08.06 10:49) [3]
Ничего не понял. Совсем. Перефразируй.
pic509 (2006-08-28 10:49:00) [12]это решение не подходит, т.к. таких выборок клиентская машина должна выполнить как минимум несколько 10'000, я думаю сервер просто станет... Нельзя ли одним Динамически изменяемым SELECT выполнить выборку 1 записи???
Fay (2006-08-28 10:48:00) [13]2 pic509 © (28.08.06 10:32)
Возможно, стоит воспользоваться view
Ega23 (2006-08-28 10:37:00) [14]
Set NoCount ON;
Create Table #Temp (.....);
Exec( 'insert into #Temp Select ... from #yout_temp_table');
Set NoCount OFF;
Select * from #Temp;
первое, что пришло в голову..