La construction dynamique où l'état dans l'instruction SQL
Je veux construire personnalisé Où l'état basé sur la procédure stockée entrées, si non nul, je vais les utiliser dans la déclaration, sinon je ne vais pas les utiliser.
if @Vendor_Name is not null
begin
set @where += 'Upper(vendors.VENDOR_NAME) LIKE "%"+ UPPER(@Vendor_Name) +"%"'
end
else if @Entity is not null
begin
set @where += 'AND headers.ORG_ID = @Entity'
end
select * from table_name where @where
Mais j'obtiens cette erreur
An expression of non-boolean type specified in a context where a condition is expected, near 'set'.
OriginalL'auteur Mohamed Abdel Hakim | 2013-09-30
Vous devez vous connecter pour publier un commentaire.
Utiliser ceci :
Je l'ai tester et il a Travaillé
OriginalL'auteur Ardalan Shahgholi
Vous ne pouvez pas simplement mettre votre variable normale SQL que vous avez dans cette ligne:
Vous devez utiliser SQL dynamique. De sorte que vous pourriez avoir quelque chose comme:
Je suppose que votre problème est plus complexe et que vous avez simplifié pour cela, mais si tous les prédicats sont ajoutés à l'aide de
IF .. ELSE IF.. ELSE IF
, alors vous n'avez pas besoin de SQL dynamique à tous, vous pouvez simplement utiliser:OriginalL'auteur GarethD