[英]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.