2013-07-11 1 views
0

У меня есть следующая проблема. Я хочу отправить значение null в Хранимую процедуру с помощью параметра querystringparameter.Отправка нулевого параметра в строку запроса. Сохраненная процедура

Это моя хранимая процедура

CREATE PROCEDURE spGetAllProducts 
@catID int = null, 
@subcatID int = null 
AS 
BEGIN 
    SELECT * FROM Products WHERE 
    ((@catID is null) OR (category_id = @catID)) 
    AND ((@subcatID is null) OR (subcategory_id = @subcatID)) 
END 

она работает, когда я тестирование со следующими запросами, как точно, как я хочу

spGetAllProducts null, '3' 
spGetAllProducts '8', null 
spGetAllProducts '8', '3' 
spGetAllProducts null, null 

, но когда я пытаюсь отправить пустое значение с queryparameter его не работает

вот мой SqlDataSource

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringReviewDB %>" SelectCommandType="StoredProcedure" SelectCommand="spGetAllProducts"> 

    <SelectParameters> 
    <asp:QueryStringParameter Direction="Input" Name="catID" QueryStringField="catID" Type="Int32" /> 
    <asp:QueryStringParameter Direction="Input" Name="subcatID" QueryStringField="subcatID" Type="Int32" DefaultValue="" ConvertEmptyStringToNull="True" /> 
    </SelectParameters> 

    </asp:SqlDataSource> 

Когда я посылаю запрос, как этот

http://localhost:50693/TreeViews.aspx?catID=8&subcatID=3 

он работает, но когда я посылаю следующий запрос он не работает

http://localhost:50693/TreeViews.aspx?catID=8&subcatID= 

Thx из ныне

+0

Как ответил @LearningAsp, ваш второй запрос равен следующему: 'spGetAllProducts '8', ''' – Serg

ответ

0

попробовать как это

CREATE PROCEDURE spGetAllProducts @catID int = null, @subcatID int = null AS BEGIN SELECT * FROM Products WHERE ((@catID '') OR (category_id = @catID)) AND ((@subcatID = '') OR (subcategory_id = @subcatID)) END

Я думаю, что как хранимая процедура принимает это как пустую строку не как null, у меня была аналогичная проблема, и она работала для меня

+0

thx Я изменил свою хранимую процедуру сейчас, когда я отправляю значение «0», оно работает –

+0

ok, затем проверьте параметр во время отправки в хранимую процедуру, если это «», т.е. пустая строка, затем замените ее на 0 – LearningAsp