कम से कम एक समस्या:आपको अपने स्ट्रिंग मान को सिंगल कोट्स से घेरना चाहिए, और एक स्ट्रिंग के अंदर से बचने के लिए आपको उन्हें दोगुना करना होगा:
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;