Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

संग्रहीत प्रक्रिया EXEC बनाम sp_executesql अंतर?

आपका 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'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Windows 10 UWP ऐप से SQL सर्वर डेटाबेस से कैसे कनेक्ट करें

  2. SQL सर्वर में एक पूर्णांक को दशमलव में कैसे बदलें

  3. संग्रहीत कार्यविधि में SET XACT_ABORT ON का उपयोग करने का क्या लाभ है?

  4. SQL क्वेरी से गिनती कैप्चर करना

  5. पहले ईएफ कोड में परिकलित कॉलम