Поне един проблем:трябва да ограждате стойността на низа си с единични кавички и за да избегнете тези вътре в низ, трябва да ги удвоите:
WHERE ' + @pi_colName + ' = ''' + @pi_colValue + ''' AND ...
Може също така да искате да декларирате вашата @sql променлива като нещо по-голямо от 100 знака! Изглежда, че вашият низ се съкращава.
Ако възможните стойности за @pi_colName са крайни, типът данни винаги е низ и колоните са съвместими с сортиране, можете да направите нещо подобно и да избегнете динамичен SQL:
SELECT ...
WHERE CASE @pi_colName
WHEN 'col1' THEN col1
WHEN 'col2' THEN col2
END = @pi_ColValue;