次の問題があります。クエリ文字列パラメータでストアド プロシージャに null 値を送信したい。
これは私のストアドプロシージャです
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 で null 値を送信しようとすると、機能しません
ここに私の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