J'ai le sp suivant qui utilise une clause conditionnelle where - ish!SQL conditionnel où Clause s'exécutant à l'aide de paramètres de chaîne de requête - Si une fonction est nécessaire?
@MemberId varchar(7),
@LocationId varchar(8),
@UUF1 varchar(150),
@UUF2 varchar(50),
@UUF4 varchar(50),
@IDDesc varchar(255),
@OwnBrand nvarchar(50),
@WeightStatus varchar(50),
@MaterialLevel varchar(10),
@BaseMaterialName varchar(15),
@ExtendedMaterialName varchar(50),
@PackagingTypeCode varchar(20),
@Biodegradable nvarchar(50),
@Recyclability varchar(30),
@Feedback varchar(255)
AS
SELECT MemberId, MemberName, LocationId, IDDesc, UnitId, UnitDescription, UnitUserField1, UnitUserField2, UnitUserField4, IsOwnBrand, OwnBrand,
UnitUserField10, SaleDate, SaleQty, LevelNo, WeightStatus, RevisionSourceCode, RevisionDate, MaterialLevel, BaseMaterialID, BaseMaterialName,
ExtendedMaterialId, ExtendedMaterialName, PackagingTypeCode, UnitWeight, WeightUnitCode, IsBiodegradable, Biodegradable, RecycledContent,
Recyclability, Tonnage, ProductPercentage, Productpriority, Feedback, PriKey
INTO #tblSPPartI
FROM tblWeights
WHERE ((MemberId = @MemberID) OR (@MemberId IS NULL))
AND ((LocationId = @LocationID) OR (@LocationID IS NULL))
AND ((UnitUserField1 = @UUF1) OR (@UUF1 IS NULL))
AND ((UnitUserField2 = @UUF2) OR (@UUF2 IS NULL))
AND ((UnitUserField4 = @UUF4) OR (@UUF4 IS NULL))
AND ((IDDesc= @IDDesc) OR (@IDDesc IS NULL))
AND ((OwnBrand = @OwnBrand) OR (@OwnBrand IS NULL))
AND ((WeightStatus = @WeightStatus) OR (@WeightStatus IS NULL))
AND ((MaterialLevel = @MaterialLevel) OR (@MaterialLevel IS NULL))
AND ((BaseMaterialName = @BaseMaterialName) OR (@BaseMaterialName IS NULL))
AND ((ExtendedMaterialName = @ExtendedMaterialName) OR (@ExtendedMaterialName IS NULL))
AND ((PackagingTypeCode = @PackagingTypeCode) OR (@PackagingTypeCode IS NULL))
AND ((IsBiodegradable = @Biodegradable) OR (@Biodegradable IS NULL))
AND ((Recyclability = @Recyclability) OR (@Recyclability IS NULL))
AND ((Feedback = @Feedback) OR (@Feedback IS NULL))
Lorsque je le test dans Sql, il fonctionne très bien. Cependant, je l'utilise dans un contexte d'application Web où les paramètres sont définis à l'aide d'une chaîne de requête.
Une chaîne de requête ne sera jamais envoyée comme nulle dans ce contexte - si un utilisateur n'a pas sélectionné un paramètre, la chaîne de requête du paramètre sera "Non spécifié".
Par conséquent, lorsque les paramètres de chaîne de requête sont passés dans le SQL ci-dessus, la valeur de paramètre renvoyée est "Non spécifié" par opposition à ce dont j'ai besoin, c'est-à-dire une valeur nulle. Comment pourrais-je manipuler (a) soit le code ci-dessus pour que le "Non Spécifié" soit pris en compte ou (b) aurais-je besoin de changer mon binaire html/C# codebehind?
Excuses si cela n'a pas de sens.
également savoir que cette approche peut conduire à des plans de requêtes incorrectes parfois utilisées ... –