क्या आपने ऐसा कुछ करने की कोशिश की:
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
यह सुनिश्चित करने के लिए कि केवल एक ही, पूर्वानुमेय मान हमेशा असाइन किया जाता है।