簡體   English   中英

將varchar值轉換為int時轉換失敗

[英]Conversion failed when converting varchar value to int

嘗試執行SP時出現錯誤。 請幫助

Conversion failed when converting the varchar value 'INSERT INTO INVESTOR_ACCOUNT     VALUES('253361',' to data type int.

這是我的SP

ALTER Procedure [dbo].[RM_INVESTOR_ACCOUNTS_INSERT]
@AccountNo varchar(20), @InvestorID integer, @SaleDate datetime
As
Begin
declare @query nvarchar(max) 
set @query ='INSERT INTO INVESTOR_ACCOUNT VALUES('''+ @AccountNo+ ''','+@InvestorID+','+@SaleDate+ ')'
print @query
End

用以下命令執行

exec RM_INVESTOR_ACCOUNTS_INSERT '253361',1,'2003-12-24 00:00:00.000'
set @query ='INSERT INTO INVESTOR_ACCOUNT VALUES('''+ @AccountNo+ ''','+CONVERT(VARCHAR,@InvestorID)+',CONVERT(DATETIME,'''+CONVERT(VARDHAR,@SaleDate,113)+ '',113')'

運算符+不明確。 它可以表示數字加法或字符串串聯。 您混入了數字,因此將其解釋為加法。

因此,進行顯式轉換。 就像是:

set @query ='INSERT INTO INVESTOR_ACCOUNT
    VALUES('''+ cast(@AccountNo as varchar(255)) + ''', '+cast(@InvestorID as varchar(255)) +','+@SaleDate+ ')';

編輯:

對於日期,這應該起作用:

set @query ='INSERT INTO INVESTOR_ACCOUNT
    VALUES('''+ cast(@AccountNo as varchar(255)) + ''', '+cast(@InvestorID as varchar(255)) +', ''' + @SaleDate + ''')';

它將使用默認格式。 關鍵是將值放在字符串的單引號中。

您可以通過以下方式明確顯示格式:

set @query ='INSERT INTO INVESTOR_ACCOUNT
    VALUES('''+ cast(@AccountNo as varchar(255)) + ''', '+cast(@InvestorID as varchar(255)) +', ''' + convert(varchar(10), @SaleDate, 121) + ''')';

這使用SQL Server通常理解的YYYY-MM-DD格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM