J'ai une procédure stockée avec laquelle je remplis gridview dans le programme .net. Le problème est quand je remplis ce paramètre, et l'envoi pour l'exécution à la base de données, je ne reçois rien en retour.sql parameter provoquant des problèmes
Lorsque j'exécute la requête sans ce paramètre, l'application renvoie des données sans problème.
Une idée de ce que peut être le problème?
Certains code:
if (ddlCountries.SelectedIndex > 0)
{
commAdvanced.Parameters.Add("@ShippingCountry", SqlDbType.NVarChar).Value = shippingCountry;
}
else
{
commAdvanced.Parameters.Add("@ShippingCountry", SqlDbType.NVarChar).Value = DBNull.Value;
}
et voici la procédure stockée:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE Dbo_SearchAll
(
@StartTime datetime = null,
@EndTime datetime = null,
@CustomerEmail nvarchar(255) = null,
@OrderStatusID nvarchar = null,
@PaymentStatusID nvarchar = null,
@Username nvarchar(255) = null,
@CustomerName nvarchar(255) = null,
@OrderNumber int = null,
@MinimumOrderAmount decimal = null,
@MaximumOrderAmount decimal = null,
@ShippingMethod nvarchar = null,
@SKU nvarchar(255) = null,
@CouponID int = null,
@DiscountType int = null,
@ShippingCountry nvarchar = null
)
AS BEGIN
SET NOCOUNT ON
SELECT DISTINCT
o.OrderID, o.OrderTotal, o.ShippingCountry,
n.Name AS OrderStatus,
p.Name AS PaymentStatus
FROM
Order o
JOIN
OrderStatus n ON o.OrderStatusID = n.OrderStatusID
JOIN
PaymentStatus p ON o.OrderStatusID = p.PaymentStatusID
JOIN
Customer c ON o.CustomerID = c.CustomerID
JOIN
OrderVariationsPeople op ON o.OrderID = op.OrderID
JOIN
VariousPeople pv ON op.ProductID = pv.ProductId
WHERE
(o.CreatedOn > @StartTime OR @StartTime IS NULL)
AND (o.CreatedOn < @EndTime OR @EndTime IS NULL)
AND (o.ShippingEmail = @CustomerEmail OR @CustomerEmail IS NULL)
AND (o.OrderStatusID IN (@OrderStatusID) OR @OrderStatusID IS NULL)
AND (o.PaymentStatusID IN (@PaymentStatusID) OR @PaymentStatusID IS NULL)
AND (c.Username = @Username OR @Username IS NULL)
AND (o.BillingFirstName + ' ' + o.BillingLastName = @CustomerName OR @CustomerName IS NULL)
AND (o.ShippingFirstName + ' ' + o.ShippingLastName = @CustomerName OR @CustomerName IS NULL)
AND (o.OrderID = @OrderNumber OR @OrderNumber IS NULL)
AND (o.OrderTotal > @MinimumOrderAmount or @MinimumOrderAmount IS NULL)
AND (o.OrderTotal < @MaximumOrderAmount OR @MaximumOrderAmount IS NULL)
AND (o.ShippingMethod = @ShippingMethod OR @ShippingMethod IS NULL)
AND (pv.SKU = @SKU OR @SKU IS NULL)
AND (o.DiscountID = @DiscountType OR @DiscountType IS NULL)
AND (o.ShippingCountry = @ShippingCountry OR @ShippingCountry IS NULL)
ORDER BY
o.OrderID
END
Toute idée pourquoi ce paramètre est à l'origine des erreurs?
Merci à l'avance
Quelle erreur obtenez-vous? –
Je suppose que vous définissez la valeur de chaîne de shippingCountry = ddlCountries.SelectedValue quelque part, non? – Bill
Oui, oui, et le paramètre sql obtient la bonne sélection, s'il y a une valeur dans la liste déroulante, elle sera sélectionnée, sinon la valeur sera la valeur null sql. – Laziale