आपका sp_executesql एसक्यूएल शायद होना चाहिए;
DECLARE @SQL as nvarchar(128) = 'select ' + @Columns + ' from ' +
@TableName + ' where [email protected]'
यह आपको SQL में एम्बेड करने के बजाय पैरामीटर के रूप में @eStatus के साथ sp_executesql को कॉल करने की अनुमति देगा। इससे यह फायदा होगा कि @eStatus में कोई भी वर्ण हो सकता है और सुरक्षित होने के लिए आवश्यक होने पर यह डेटाबेस द्वारा स्वचालित रूप से स्वचालित रूप से बच जाएगा।
इसकी तुलना EXEC . के लिए आवश्यक SQL से करें;
DECLARE @SQL as nvarchar(128) = 'select ' + @Columns + ' from ' +
@TableName + ' where Status=' + char(39) + @Status + char(39)
...जहाँ @Status में एम्बेड किया गया char(39) आपके SQL को अमान्य बना देगा और संभवतः एक SQL इंजेक्शन संभावना बना देगा। उदाहरण के लिए, अगर @Status O'Reilly
. पर सेट है , आपका परिणामी SQL होगा;
select acol,bcol,ccol FROM myTable WHERE Status='O'Reilly'