我使用for xml
为审计跟踪生成了插入语句,并生成了正确的插入语句。以下是生成的内容。
这是Print @SQL
输出的内容:
INSERT INTO [AuditLog]
(
[TableName]
,[ColumnName]
,[Value]
,[Action]
,[TimeStamp]
) 
SELECT 
'Book'
,'BookID'
,CONVERT(VARCHAR(MAX), BookID)
,CONVERT(VARCHAR(MAX), 1)
,getdate()
FROM INSERTED;
INSERT INTO [AuditLog]
(
[TableName]
,[ColumnName]
,[Value]
,[Action]
,[TimeStamp]
) 
SELECT 
'Book'
,'c_Name'
,CONVERT(VARCHAR(MAX), c_Name)
,CONVERT(VARCHAR(MAX), 1)
,getdate()
FROM INSERTED;
INSERT INTO [AuditLog]
(
[TableName]
,[ColumnName]
,[Value]
,[Action]
,[TimeStamp]
) 
SELECT 
'Book'
,'c_Author'
,CONVERT(VARCHAR(MAX), c_Author)
,CONVERT(VARCHAR(MAX), 1)
,getdate()
FROM INSERTED;
INSERT INTO [AuditLog]
(
[TableName]
,[ColumnName]
,[Value]
,[Action]
,[TimeStamp]
) 
SELECT 
'Book'
,'c_Price'
,CONVERT(VARCHAR(MAX), c_Price)
,CONVERT(VARCHAR(MAX), 1)
,getdate()
FROM INSERTED;
但是当我尝试使用EXECUTE(@SQL)
执行时,我收到一条错误消息:
'&'附近的语法不正确。
答案 0 :(得分:0)
令人难以置信的是,我找到了非常简单的解决方案。我使用 COALESCE 函数生成动态插入语句,我没有看到任何特殊字符,否则使用 for xml