Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.017 c
3-83893
miss
2003-06-03 10:16
2003.06.26
Даты


1-84241
SergeY
2003-06-12 22:56
2003.06.26
Как обратиться к компоненту в цикле через переменную?


3-84020
WinAmp
2003-05-30 21:07
2003.06.26
Индекс не дает редактировать данные в таблице?! :-(


1-84372
X~Man
2003-06-13 20:29
2003.06.26
Сохранение


1-84066
Dr. Andrew
2003-06-07 13:30
2003.06.26
Где ошибка при завершении Hook и как занести данные в TPoint?




   Наверх