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

संग्रहीत कार्यविधि में गतिशील SQL से परिणाम प्राप्त करें

क्या आपने ऐसा कुछ करने की कोशिश की:

DECLARE @FiscalYear INT, @DataSource NVARCHAR(25), @SQL NVARCHAR(250);
SET @DataSource = N'CustomerCosts20120328';
SET @SQL = N'SELECT DISTINCT @FiscalYear = FiscalYear FROM ' + @DataSource;
EXEC sp_executesql @SQL, N'@FiscalYear INT OUTPUT', @FiscalYear OUTPUT;

PRINT @FiscalYear;

आप यह सुनिश्चित करना चाहेंगे कि आप N के साथ nvarchar स्ट्रिंग्स को उपसर्ग करें, उदा। SELECT @SQL = N'SELECT ... .

साथ ही, आप जानते हैं कि यदि क्वेरी एकाधिक पंक्तियां लौटाती है, तो वह मान जो @FiscalYear को असाइन किया जाता है पूरी तरह से मनमाना है, है ना? जबकि आप उस तालिका से एक मान की अपेक्षा कर सकते हैं, यह MAX() . का उपयोग करने के लिए चोट नहीं पहुंचा सकता है या TOP 1 ... ORDER BY यह सुनिश्चित करने के लिए कि केवल एक ही, पूर्वानुमेय मान हमेशा असाइन किया जाता है।



  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 सर्वर 2017 में एक तालिका बनाएँ

  2. सी # में एसक्लट्रांसक्शन का उपयोग कैसे करें

  3. मेरा टी-एसक्यूएल बाएं क्यों काम नहीं कर रहा है?

  4. ExecuteNonQuery वापसी -1 क्वेरी स्ट्रिंग के बावजूद sql COUNT का उपयोग करते समय

  5. SQL सर्वर 2008 पर तालिका बनाएँ पर SQL टिप्पणियाँ