在使用 MSSQL 2005 数据库的项目中,我们需要在日志表中记录所有数据操作操作。该表中的一个字段应该包含更改之前的行。我们有很多表,所以我试图编写一个存储过程,它将所有字段收集到给它的表的一行中,以某种方式连接它们,然后用该信息编写一个新的日志条目。
我已经尝试使用 FOR XML PATH 并且它有效,但是客户端不喜欢 XML 表示法,他们想要一个 csv 字段。
这是我对 FOR XML PATH 的看法:
DECLARE @foo varchar(max);
SET @foo = (SELECT * FROM table WHERE id = 5775 FOR XML PATH(''));
“table”、“id”和实际 id(此处为:5775)的值稍后将通过对存储过程的调用传入。
有没有办法在不获取 XML 表示法并且事先不知道 SELECT 语句将返回哪些字段的情况下做到这一点?