我有一个在表格中添加新数据的程序。
表的名称在参数中。
错误是
数据类型varchar(max)和日期在add运算符中不兼容。
日期字段必须是<root>
<book title="book1">
<author> Thibaut </author>
<author> Luc </author>
</book>
<book title="book2">
<author> Luc </author>
<author> Jay </author>
</book>
<book title="book3">
<author> Jay </author>
<author> Henry </author>
</book>
</root>
类型。
PROCEDURE
date
答案 0 :(得分:4)
请尝试使用CAST()
... + CAST(@date AS VARCHAR(MAX) + ...
此外,使用sp_executesql
将是一种更好,更安全的方法。
DECLARE @SQL NVARCHAR(MAX);
SET @SQL = ' INSERT INTO dbo.' + @Table;
SET @SQL += ' ([Timestamp], [Version],Process,[Level],[Message],StackTrace,[User],EnvironmentID,UUID,UDID,TransactionID)';
SET @SQL += ' VALUES';
SET @SQL += ' (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10);';
EXECUTE sp_executesql
@SQL
, N'@p0 DATE, @p1 VARCHAR(MAX), @p2 VARCHAR(MAX), @p3 VARCHAR(MAX), @p4 VARCHAR(MAX), @p5 VARCHAR(MAX), @p6 VARCHAR(MAX), @p7 VARCHAR(MAX), @p8 VARCHAR(MAX), @p9 VARCHAR(MAX), @p10 VARCHAR(MAX)'
, @p0 = @date
, @p1 = @version
, @p2 = @process
, @p3 = @level
, @p4 = @message
, @p5 = @stacktrace
, @p6 = @user
, @p7 = @environmentID
, @p8 = @UUID
, @p9 = @UDID
, @p10 = @transactionID;
只需在第3行指定正确的列数据类型。