Я хочу написать хранимую процедуру для этого запроса!Как создать хранимую процедуру для этого запроса?
Мой запрос:
SELECT *
FROM [dbo].[Table_asbabbazi]
WHERE
name_product LIKE '%'+'ibm'+ '%'
AND first_price BETWEEN 5000 AND 100000
AND collection_1 = 'collection1'
AND id_state = 8
Я написал динамический хранимую процедуру так:
ALTER PROCEDURE [dbo].[Asbabbazi_A]
@name_product nvarchar(50),
@first_price int,
@final_price int,
@collection_1 nvarchar(30),
@id_state tinyint
AS
BEGIN
DECLARE @SQLstring nvarchar(1000)
DECLARE @PARAMS nvarchar(1000)
SET @SQLstring = 'SELECT IDproduct, name_product, first_price, final_price, max_registered_price, final_date_view_shamsi, count_views, image_1 FROM dbo.Table_asbabbazi WHERE active= 0 '
if(@name_product != 'no name')
set @SQLstring = @SQLstring + ' AND name_product LIKE '''+ '%' + @name_product + '%' + ''''
if (@final_price != 0)
set @SQLstring = @SQLstring + ' AND first_price between @first_price AND @final_price'
if (@collection_1 != 'انتخاب کنید')
set @SQLstring = @SQLstring + ' AND collection_1 = @collection_1'
if (@id_state != 0)
set @SQLstring = @SQLstring + ' AND id_state = @id_state '
set @PARAMS='@name_product nvarchar(50),
@first_price int,
@final_price int,
@collection_1 nvarchar(30),
@id_state tinyint'
EXECUTE sp_executesql @SQLstring, @PARAMS, @name_product, @first_price, @final_price, @collection_1, @id_state
END
Эта хранимая процедура работала, но есть проблема: когда установлено значение для name_product
он показывает один продукта или любого продукта. Я тестирую запрос в SQL Server Management Studio и работает правильно. Но этот запрос в хранимой процедуре работает неправильно. Я думаю, что проблема в этом ряду
if(@name_product != 'no name')
set @SQLstring = @SQLstring + ' AND name_product LIKE '''+ '%' + @name_product + '%' + ''''
Пожалуйста, помогите
спасибо за ответы .Why вы использовали метод CAST()? Где я должен использовать print @SQLstring? – XXA
@HosseinMahdavi отметьте это как ответ, как вы думаете, это полезно –
Почему вы использовали метод CAST()? Где я должен использовать print @SQLstring? – XXA