2012-03-31 100 views
5

我收到錯誤錯誤轉換數據類型爲nvarchar成int

錯誤轉換數據類型爲nvarchar成int

代碼:

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

請張貼 – 2012-03-31 07:28:11

+1

你傳遞參數REGNO tblRCDocuments的結構是字符串數據類型,你提到這反映錯誤。傳遞regno的int類型值。 – 2012-03-31 07:30:31

+1

好的,只需調試一下 - 你傳入存儲過程的值是什麼?如果你在SQL Server Mgmt Studio中手動調用那個'INSERT'語句,那些參數怎麼辦? – 2012-03-31 08:00:42

回答

8

貌似REGNO是一個nvarchar數據類型你的表,你已經通過你的過程傳遞了一個int,或者使用一個強制轉換並將@regno轉換爲nvarchar,或者將regno數據類型更改爲表中的整數。

DECLARE @regnocast NVARCHAR(15) 

SET @regnocast = CAST(@regno AS NVARCHAR) 

然後在你的SELECT,INSERT和WHERE子句使用@regnocast而不是@regno

+0

感謝每一位的幫助 – chandu 2012-03-31 08:46:14

+1

另外:我會建議總是指定一個明確的**長度**當你做演員。默認情況下,如果你不指定任何內容 - 它將會是30個字符。如果這很好 - 很好 - 但是如果你這樣說的話更清楚:'CAST(@regno AS NVARCHAR(20))'或者任何你需要的東西...... – 2012-03-31 09:56:15

相關問題