मेरा मानना है कि इसे निष्पादित करने से पहले आपको अपने SQL कथन को समग्र रूप से एक साथ जोड़ना होगा:
DECLARE
@TableA nvarchar(255)='TableA',
@DOCID1 nvarchar(MAX),
@SqlStmt NVARCHAR(500),
@DOCID2 int;
SET @SqlStmt = N'SELECT TOP (1) ' + @DOCID1 + N' = DOCID1, ' + @DOCID2 + N' = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';
EXEC (@SqlStmt)
जहां तक मुझे याद है, आप EXEC
. के अंदर भाव और गणना नहीं कर सकते हैं कमांड - पहले से स्टेटमेंट तैयार करवाएं, फिर उस पर अमल करें
साथ ही, मुझे पूरा यकीन नहीं है कि आपके वेरिएबल में क्या है - @DocID1
और @DocID2
- क्या आप उनका मान सेट करना चाहते हैं, या क्या वे सेट करने के लिए किसी अन्य चर का नाम रखते हैं ??
अपडेट करें: यदि आप वास्तव में @DocID1
. के मान सेट करना चाहते हैं और @DocID2
, तो आपकी क्वेरी शुरू में गलत थी - तब आपको कुछ इस तरह की आवश्यकता होगी:
DECLARE
@TableA nvarchar(255) = 'TableA',
@SqlStmt NVARCHAR(500);
SET @SqlStmt =
N'DECLARE @DocID1 NVARCHAR(MAX), @DocID2 INT; ' +
N'SELECT TOP (1) @DOCID1 = DOCID1, @DOCID2 = DOCID2 FROM [' + @TABLEA + N'] ORDER BY DOCID2';
EXEC (@SqlStmt)
लेकिन फिर, उन दो चरों का दायरा अंदर . है गतिशील रूप से निष्पादित SQL और आपकी स्क्रिप्ट के "बाहर" के लिए उपलब्ध नहीं हैं।