sql >> Database >  >> RDS >> Sqlserver

Een dynamische waar-clausule maken in de SQL Server-opgeslagen procedure

Ten minste één probleem:je moet je tekenreekswaarde omringen met enkele aanhalingstekens, en om te ontsnappen aan die binnen een tekenreeks, moet je ze verdubbelen:

WHERE ' + @pi_colName + ' = ''' + @pi_colValue + ''' AND ...

Misschien wilt u uw @sql-variabele ook declareren als iets groter dan 100 tekens! Het lijkt erop dat je string wordt afgekapt.

Als de mogelijke waarden voor @pi_colName eindig zijn, het gegevenstype altijd string is en de kolommen compatibel zijn met sortering, dan zou je zoiets als dit kunnen doen en dynamische SQL vermijden:

SELECT ...
WHERE CASE @pi_colName 
  WHEN 'col1' THEN col1
  WHEN 'col2' THEN col2
END = @pi_ColValue;



  1. Postgresql vs. MySQL:hoe verhouden hun gegevensomvang zich tot elkaar?

  2. Grootte van alle tabellen in de database ophalen

  3. Geneste zoekopdracht in squeel

  4. Stop MySQL met het hergebruiken van AUTO_INCREMENT ID's