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

चुनिंदा गिनती (*) ... और एक ईमेल भेजने के लिए लचीले पैरामीटर के साथ EXEC संग्रहीत कार्यविधि

मैं आपको सलाह देने के लिए बाध्य महसूस करता हूं कि इस तरह से गतिशील तारों में चर पारित करने से आप SQL इंजेक्शन के लिए खुल जाते हैं। यह एक बुरा अभ्यास है, और जब तक बहुत सख्ती से नियंत्रित नहीं किया जाता है, तब तक आम तौर पर इसका विरोध किया जाता है।

उसने कहा...

अपने @MySQL को varchar से nvarchar में बदलें।

फिर इसे बदलने का प्रयास करें:

set @MySQL = 'select count(*) from ' [email protected] + ' where ' + @MyWhere 
set @SQL_Count = @MySQL 
set @recordCount = convert(int, @SQL_Count ) -- <<--this is the error

इसके लिए:

set @MySQL = 'select @recordCount=count(2) from ' + @MyTable + ' where ' + @MyWhere 
exec sp_execute @MySQL, N'@recordCount int OUTPUT', @[email protected] OUTPUT


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर केस एक्सप्रेशन

  2. SQL सर्वर में गतिशील क्वेरी

  3. SQL सर्वर में वर्तमान सत्र के लिए दिनांक स्वरूप बदलें

  4. कैसे जांचें कि SQL में एक तालिका को हटाने के बाद कितनी संग्रहीत प्रक्रिया प्रभावित होगी

  5. SQL लेनदेन त्रुटि:वर्तमान लेनदेन प्रतिबद्ध नहीं किया जा सकता है और लॉग फ़ाइल में लिखने वाले संचालन का समर्थन नहीं कर सकता है