Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

ПОМОГИТЕ грамотно организовать поиск на базе SP?   Найти похожие ветки 

 
DBDev   (2003-05-29 16:55) [0]

Собирать в процедуре текст запроса, а затем выполнять:
напр:

declare @query_text nvarchar(512)
declare @IsStated INT
SET @IsStated = 0
SET @query_text = "SELECT * FROM Base "
if (@RegPlaceID <> "0")
begin
if (@IsStated = 0)
begin
SET @IsStated = 1
SET @query_text = @query_text + " WHERE RegPlaceID = " + @RegPlaceID
end
...

exec sp_executesql @query_text


Если собирать, то каким образом строить выражения содержащие строки, то есть:

SET @query_text = @query_text + " WHERE Reg LIKE = " + СИМВОЛ_КАВЫЧКИ + @Reg + СИМВОЛ_КАВЫЧКИ

Что есть символ кавычки в этом случае ?

А если сразу выполять, то как прописать случай если фильтр равен нулю, не нагромождать же процедуру и впрям конструкциями типа:

IF @SupplierID = 0
Select a,b,c from T
IF @SupplierID <> 0
Select a,b,c from T WHERE SupplierID = @SupplierID


 
NAlexey ©   (2003-05-29 17:06) [1]

>Что есть символ кавычки в этом случае ?
" "" - это есть символ кавычки
>не нагромождать же процедуру и впрям
нагромождать


 
NAlexey ©   (2003-05-29 17:09) [2]

Оговорюсь: Грамотно нагромаждать -


IF @SupplierID = 0
SET @Part = ""
IF @SupplierID <> 0
SET @Part = "WHERE SupplierID = @SupplierID"
SET @query_text = @query_text + @Part


 
SergSuper   (2003-05-30 10:27) [3]

откуда такая любовь к динамическим запросам?
написать 4 строчки - это нагромаждать, а написать 13 строчек с динамическим запросом - это типа нет, типа понятней стало
ну не знаю, я бы так написал
Select a,b,c from T WHERE SupplierID = @SupplierID or @SupplierID = 0



 
Sandman25 ©   (2003-05-30 10:57) [4]

IF @SupplierID <> 0
SET @query_text = @query_text + "WHERE SupplierID = @SupplierID"

А если условий несколько, то делаешь так
SET @query_text = "select * from t1 where 1=1"
IF @SupplierID <> 0
SET @query_text = @query_text + "AND SupplierID = @SupplierID"
IF @Detail <> 0
SET @query_text = @query_text + "AND Detail = @Detail"
IF @PostNumber <> 0
SET @query_text = @query_text + "AND PostNumber = @PostNumber"


 
Sandman25 ©   (2003-05-30 11:03) [5]

Упс, пробелы перед AND забыл :)



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

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
14-84613
Nikos
2003-06-09 16:40
2003.06.26
Вопрос по Database Desktop


7-84769
Anisimov
2003-04-15 15:42
2003.06.26
Подскажите плиз как узнать время простоя Винды?


14-84693
Карелин Артем
2003-06-04 15:16
2003.06.26
Как заработать на квартиру программисту?


1-84321
AndrewR
2003-06-16 06:28
2003.06.26
Как можно вызвать FindDialog, что бы в Memo текст искал. Может ке


7-84778
Landgraph
2003-04-16 18:34
2003.06.26
Power Off in NT