2012-03-31 19 views
5

आई इंट करने के लिए त्रुटित्रुटि परिवर्तित डेटाप्रकार nvarchar int करने के लिए

त्रुटि परिवर्तित डेटाप्रकार nvarchar हो रही है

कोड:

ALTER procedure [dbo].[sp_rcdoc] 
    @regno int, 
    @appname varchar(50), 
    @DOI datetime, 
    @COV varchar(50), 
    @validtill date, 
    @imgloc varchar(500), 
    @ImagNo char(20), 
    @Purposecode varchar(50), 
    @FLAG varchar(3) 
AS BEGIN 
    IF NOT EXISTS(SELECT regno FROM tblRCDocuments WHERE regno = @regno) 
    BEGIN 
     INSERT INTO tblRCDocuments(regno, appname, DOI, COV, validtill, imgloc, ImagNo, Purposecode, FLAG) 
     VALUES(@regno, @appname, @DOI, @COV, @validtill, @imgloc, @ImagNo, @Purposecode, @FLAG) 
    END 
+1

से @regnocast बल्कि का उपयोग tblRCDocuments –

+1

आप Regno के लिए पैरामीटर गुजर की संरचना पोस्ट करें स्ट्रिंग डेटाप्रकार जो त्रुटि को प्रतिबिंबित के रूप में आप का उल्लेख है। Regno के लिए int प्रकार मान पास करें। –

+1

ठीक है, तो बस इसे डीबग करें - आप संग्रहीत प्रो में क्या मूल्य गुजर रहे हैं ?? क्या होगा यदि आप उन मानकों के साथ SQL सर्वर एमजीएमटी स्टूडियो में मैन्युअल रूप से 'INSERT' कथन को कॉल करते हैं ?? –

उत्तर

8

लगता Regno की तरह में एक nvarchar डेटा प्रकार है आपकी तालिका और आपने अपनी प्रक्रिया के माध्यम से एक int पास कर दिया है, या तो एक कास्ट का उपयोग करें और @regno को nvarchar में कनवर्ट करें या regno डेटा प्रकार को तालिका में एक पूर्णांक में बदलें।

DECLARE @regnocast NVARCHAR(15) 

SET @regnocast = CAST(@regno AS NVARCHAR) 
अपने चयन, सम्मिलित में

तो और कहां खंड @regno

+0

मदद के लिए हर किसी के लिए धन्यवाद – chandu

+1

इसके अलावा: जब आप एक कलाकार करते हैं तो मैं हमेशा एक स्पष्ट ** लंबाई ** निर्दिष्ट करने की अनुशंसा करता हूं। डिफ़ॉल्ट रूप से, यदि आप कुछ निर्दिष्ट नहीं करते हैं - यह 30 वर्ण होंगे। यदि यह ठीक है - बढ़िया - लेकिन अगर आप ऐसा कहते हैं तो यह स्पष्ट है: 'CAST (@regno AS NVARCHAR (20))' ​​या जो भी आपको चाहिए ... –

संबंधित मुद्दे