将varchar值转换为int时转换失败
问题描述:
尝试执行SP时出现错误。请帮助将varchar值转换为int时转换失败
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+ ''','[email protected]+','[email protected]+ ')'
print @query
End
下面命令
exec RM_INVESTOR_ACCOUNTS_INSERT '253361',1,'2003-12-24 00:00:00.000'
答
运营商+
不明确执行的。它可以表示增加数字或字符串连接。你有混入数字,所以它被解释为加法。
因此,做明确的转换。喜欢的东西:
set @query ='INSERT INTO INVESTOR_ACCOUNT
VALUES('''+ cast(@AccountNo as varchar(255)) + ''', '+cast(@InvestorID as varchar(255)) +','[email protected]+ ')';
编辑:
对于日期,这应该工作:
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) + ''')';
它使用YYYY-MM-DD格式,SQL Server的一般理解。
答
set @query ='INSERT INTO INVESTOR_ACCOUNT VALUES('''+ @AccountNo+ ''','+CONVERT(VARCHAR,@InvestorID)+',CONVERT(DATETIME,'''+CONVERT(VARDHAR,@SaleDate,113)+ '',113')'
+1
请说明您的代码的作用以及它如何回答问题。如果你得到一个代码片段作为答案,你可能不知道如何处理它。回答应该给OP和未来访问者指导如何调试和解决他们的问题。指出你的代码背后的想法,对于理解这个问题以及应用或修改你的解决方案有很大的帮助。 – Palec 2014-09-02 12:00:36
不需要铸造/转换吗? – 2014-09-02 11:37:44
也需要转换日期。你能告诉我如何转换? – user3859666 2014-09-02 11:44:16
谢谢......但第二个(把日期值放在单引号中)不起作用 – user3859666 2014-09-02 12:00:58