Sunday 15 February 2015

sql server - stored procedure passing date parameter getting error -


  परिवर्तन प्रक्रिया [डीबीओ]। [पार्किंग डीलेट्स रिपोर्ट] @ लोकिड इंटेजीर, @ स्टार्टडेट नर्वचर (100), @ एंडेड नावर्चार (100) के रूप में DECLARE @ cols AS NVARCHAR (MAX), @ वर्ग AS NVARCHAR (MAX) का चयन करें @ cols = STUFF (('चयन करें'), VType_tbl के लिए VType_tbl से XML पथ (''), प्रकार) .value ('।', 'NVARCHAR (MAX)'), 1,1, '') सेट @query = 'SELECT दिनांक,' +cols + 'से (v.Vtype का चयन करें, कनवर्ट करें (तिथि, dtime) के रूप में ट्रांज़ैक्शन_टीएलएल से प्राप्त होने वाली तिथि vtype_tbl v t.vtid = v.vtid पर है, जहां @startdate और @enddate और locid = '+ CAST (@locid varchar (अधिकतम)) +' डी डी के बीच (गिनती (Vtype) के लिए)   

मैं इस तरह से निष्पादित करने की कोशिश कर रहा हूँ:

exec पार्किंगडियलेट्स रिपोर्ट 5, '' 2013-01-01 00:00:00 ',' 2013-06-18 23:59:59 ''

लेकिन, मुझे एक त्रुटि मिल रही है: स्केलर वैरिएबल "@startdate" को घोषित करना चाहिए

समस्या यह है कि आप ई निर्माण में एसक्यूएल का निर्माण, लेकिन आप @ स्टार्टड्एट और @ एडडेट में मानों का उपयोग नहीं कर रहे हैं, इसके बजाय आप स्ट्रिंग पास कर रहे हैं

जब आप स्ट्रिंग का निर्माण करते हैं तो आपको ये वैरिएबल के मानों को पकड़ना होगा - कुछ जैसा कि: <पूर्व> वैकल्पिक प्रक्रिया [डीबीओ]। [पार्किंग डीलेट्स रिपोर्ट] @ लॉकिड इंटेजीर, @ स्टार्टडेट नैवर्चार (100), @ एंडडेट नैवर्चार (100) के रूप में BEGIN DECLARE @ cols AS NVARCHAR (MAX), @ एनआईएचएआरएआरएआर (अधिकतम) का चयन करें @ cols = STUFF (एक्सएमएल पाथ (''), टाइप) के लिए VType_tbl से (अलग-अलग ',' + विकल्प (Vtype) का चयन करें। मूल्य ('।', 'NVARCHAR (MAX)'), 1,1, '') SET @query = 'SELECT Date,' + cols + 'से (SELECT v.Vtype, कनवर्ट करें (तिथि, डीटीएम) Transaction_tbl टी INNER से दिनांक VType_tbl v ON t.vtid = v '' + @startdate + '' 'और' '+ + @enddate +' '' और locid = '+ CAST (@ स्थान के रूप में varchar (अधिकतम) +') डी PIVOT (गिनती (Vtype) Vtype में ('+ @ cols +')) 'एक्सीकेट (@ वर्ग) END

No comments:

Post a Comment