2009-08-18 12 views
7

के पास गलत वाक्यविन्यास मुझे समझ में नहीं आता कि निम्नलिखित मुझे त्रुटि क्यों दे रहा है। मैंने सोचा कि यह टिप्पणी अनुभाग से संबंधित था, लेकिन @ एसक्यूएल nvarchar (4000) है।'sp_executesql'

BEGIN 
    sp_executesql N'SELECT ''td''' 
    --sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program 
END 

उत्तर

13

यही कारण है कि है।

+1

आप बिना और कार्यकारी एक संग्रहीत proc कॉल कर सकते हैं, लेकिन संग्रहीत proc करने के लिए कॉल ब्लॉक में केवल बयान है केवल जब। –

+1

इसे पहला बयान होना चाहिए, जरूरी नहीं कि केवल एक ही। – Tao

2

आपके पास यह एक BEGIN में संलग्न क्यों है ... अंत? ब्लॉक को sp_executesql बाहरी चलाना काम करेगा।

वैकल्पिक रूप से आप sp_executesql से पहले निष्पादन डाल सकते हैं।

 
-- This works just fine: 
BEGIN 
    -- You must have an exec before your sp_executesql or it will not work in a block 
    exec sp_executesql N'SELECT ''td''' 
END 

तुम बस एक कार्यकारी बिना एक संग्रहीत proc फोन नहीं कर सकते हैं जब आप एक ब्लॉक में हैं:

0

कुछ अवसरों पर मैं भी गुरु का इस्तेमाल किया था:

exec master..sp_executesql 
संबंधित मुद्दे