尝试执行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'
答案 0 :(得分:0)
set @query ='INSERT INTO INVESTOR_ACCOUNT VALUES('''+ @AccountNo+ ''','+CONVERT(VARCHAR,@InvestorID)+',CONVERT(DATETIME,'''+CONVERT(VARDHAR,@SaleDate,113)+ '',113')'
答案 1 :(得分:0)
运算符+
含糊不清。它可以表示添加数字或字符串连接。你有数字混合,所以它被解释为加法。
所以,做显式转换。类似的东西:
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) + ''')';
这使用YYYY-MM-DD格式,SQL Server通常理解这种格式。