2012-03-31 11 views
5

ich die Störung erhaltenFehler beim Konvertieren Datentyp nvarchar in int

Fehler beim Konvertieren Datentyp nvarchar in int

Code:

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

Bitte senden Sie die Struktur der tblRCDocuments –

+1

Sie den Parameter für regno vorbei ist String-Datentyp, der den Fehler reflektieren, wie Sie erwähnen. Übergeben Sie den Datentyp int für regno. –

+1

OK, also debuggen Sie einfach - welche Werte übergeben Sie in den gespeicherten proc ?? Was ist, wenn Sie diese INSERT-Anweisung in SQL Server Mgmt Studio manuell mit diesen Parametern aufrufen? –

Antwort

8

Sieht aus wie regno ein nvarchar-Datentyp ist in Ihre Tabelle und Sie haben ein int über Ihre Ihre Prozedur übergeben, entweder verwenden Sie eine Umwandlung und @Regno zu einem Nvarchar konvertieren oder ändern Sie den Regno-Datentyp in eine ganze Zahl in der Tabelle.

DECLARE @regnocast NVARCHAR(15) 

SET @regnocast = CAST(@regno AS NVARCHAR) 

Dann in Ihrer SELECT, INSERT und WHERE-Klauseln verwenden @regnocast statt @regno

+0

Danke an jeden für die Hilfe – chandu

+1

Außerdem: Ich würde empfehlen, immer eine explizite ** Länge ** anzugeben, wenn Sie eine Besetzung machen. Wenn Sie nichts angeben, werden standardmäßig 30 Zeichen angezeigt. Wenn das in Ordnung ist - großartig - aber es ist klarer, wenn du es sagst: 'CAST (@regno AS NVARCHAR (20))' oder was immer du brauchst ... –

Verwandte Themen