Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Вниз

Динамически изменяемый запрос из Хранимой процедуры   Найти похожие ветки 

 
pic509 ©   (2006-08-28 10:32) [0]

Люди, подскажите решение следующей задачи:
На сервере MSSQL 2000 я храню таблицу, которая закрыта по выборке для клиентов БД. Для организации доступа к ней я использую Хранимую процедуру. Вся проблема в том, что мне нужно формировать запрос с изменяемыми условиями выборки (передаются как параметры к ХП), например за определенный диапазон дат и (или) по определенному полю и т.п. Я пытался формитровать запрос как строковую переменную, а затем запускать ее EXEC(str). Но в этом случае на клиентской машине срабатывает запрет на выборку. Как еще можно сформировать динамически изменяемый запрос в ХП ???


 
Ega23 ©   (2006-08-28 10:37) [1]

Set NoCount ON;
Create Table #Temp (.....);
Exec( "insert into #Temp Select ... from #yout_temp_table");
Set NoCount OFF;
Select * from #Temp;


первое, что пришло в голову..


 
Fay ©   (2006-08-28 10:48) [2]

2 pic509 ©   (28.08.06 10:32)
Возможно, стоит воспользоваться view


 
pic509 ©   (2006-08-28 10:49) [3]

это решение не подходит, т.к. таких выборок клиентская машина должна выполнить как минимум несколько 10"000, я думаю сервер просто станет... Нельзя ли одним Динамически изменяемым SELECT выполнить выборку 1 записи???


 
Fay ©   (2006-08-28 10:51) [4]

2 pic509 ©   (28.08.06 10:49) [3]
Ничего не понял. Совсем. Перефразируй.


 
ANB ©   (2006-08-28 10:55) [5]


> т.к. таких выборок клиентская машина должна выполнить как
> минимум несколько 10"000,

Чтобы показать одну форму ? Тогда при любом методе сервер ляжет.


 
pic509 ©   (2006-08-28 11:09) [6]

разве VIEW работает на MSSQL 2000?


 
Fay ©   (2006-08-28 11:10) [7]

2 pic509 ©   (28.08.06 11:09) [6]
Есть не так мгого вещей, которыу там не работают.
Чисто по приколу, почитай BOL.


 
ANB ©   (2006-08-28 11:12) [8]


> pic509 ©   (28.08.06 11:09) [6]
> разве VIEW работает на MSSQL 2000?

Имхо. Интересно, в какой из приличных СУБД view не работает ?


 
Ega23 ©   (2006-08-28 11:20) [9]


> разве VIEW работает на MSSQL 2000?


Аж поперхнулся...


 
Ega23 ©   (2006-08-28 11:28) [10]


> Возможно, стоит воспользоваться view
>


Разве во View можно параметры передать?


 
Fay ©   (2006-08-28 11:36) [11]

2 Ega23 ©   (28.08.06 11:28) [10]
Нельзя, но можно построить нормальный запрос.


 
Ega23 ©   (2006-08-28 11:43) [12]


> Нельзя, но можно построить нормальный запрос.


А, в этом смысле... Понял...

Неясно, правда, что это за архитектура таблиц и пермишенов у автора. Подозрения накладывает...


 
pic509 ©   (2006-08-28 11:50) [13]

ОГРОМНОЕ СПАСИБО EGA23 !!! Проверил - заработало !!!


 
saxon   (2006-08-28 12:00) [14]

Не совсем понятно что есть -  > Динамически изменяемый запрос или - > запрос с изменяемыми условиями выборки ? Когда он/они меняются?

Если имееться ввиду, что могут приходить по разному проинициализированные параметры, и в зависимости от этого  ... ?

Можно предложить такой вариант :

create procedure Proc1
(
    @pID integer = null,
    ...
)
as
...
select * from Table1 (nolock) where ((@pID is null) or (Table1.ID = @pID) ...
go



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.098 c
6-1148679826
Николас
2006-05-27 01:43
2006.10.22
Как узнать IP адрес


2-1159512427
aht
2006-09-29 10:47
2006.10.22
Удаление строки в StringGrid


1-1157894604
FiJer
2006-09-10 17:23
2006.10.22
Симуляция нажатия клавиши


15-1159879783
vitv
2006-10-03 16:49
2006.10.22
API Висты


9-1136193783
hired
2006-01-02 12:23
2006.10.22
выбор готового движка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский