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;