sql >> Database teknologi >  >> RDS >> Sqlserver

Oprettelse af en dynamisk where-klausul i SQL Server-lagret procedure

Mindst ét ​​problem:Du bør omgive din strengværdi med enkelte anførselstegn, og for at undslippe dem inde i en streng skal du fordoble dem:

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

Du ønsker måske også at erklære din @sql-variabel som noget større end 100 tegn! Det ser ud til, at din streng bliver afkortet.

Hvis de mulige værdier for @pi_colName er endelige, datatypen altid er streng, og kolonnerne er kollationskompatible, kan du gøre noget som dette og undgå dynamisk SQL:

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



  1. Hvad gør Der opstod en alvorlig fejl på den aktuelle kommando. Resultaterne, hvis nogen, bør kasseres. SQL Azure fejl betyder?

  2. Sætter output fra Postgres \i input til en fil?

  3. Hvordan kan jeg udføre et sql-script med CodeIgniter og sende data til det?

  4. Installation af python-mysql med wamp's mysql