代码之家  ›  专栏  ›  技术社区  ›  helios456

将插入和删除的表保存到变量中以供使用。NET代码(通过sp_oamethod)[SQL Server 2000]

  •  0
  • helios456  · 技术社区  · 16 年前

    我正在尝试在SQL Server中创建一个SQL触发器,该触发器将以某种方式序列化插入和删除的表,以便在中使用。NET代码(通过sp_oamethod)。我希望它足够通用,可以用于任何桌子。

    我的第一次尝试是使用“for xml”将其序列化为xml,并将其传递给。NET代码。但是,我无法将XML分配给变量,因为SQL Server 2000不支持它(2005对我们来说还不是一个选项)。唯一的选择是手动进行序列化(请参阅 saving the FOR XML AUTO results to variable in SQL

    --This does not work
    declare @OldValue varchar(5000)
    select @OldValue = (select * from Deleted for XML auto)
    

    有人知道一种通用的方法吗,使用任何方法?我不在乎格式,只要我能把列名和值输入到我的数据库中。NET代码。

    2 回复  |  直到 9 年前
        1
  •  1
  •   Jack Corbett    16 年前

    您确实知道触发器发生在事务中,您尝试的触发器会延长事务,更重要的是,依赖于SQL Server之外的进程可用且无错误地完成,对吗?

        2
  •  0
  •   Peter Radocchia    16 年前

    select * from Deleted for XML auto
    

    或者,在触发器内:

    declare @tablename varchar(256) 
    set @tablename = quotename(object_name(@@procid)+'_'+convert(varchar,@@spid))
    select * into #inserted from inserted
    exec ('select * into '+@tablename+' from #inserted')
    exec dbo.myGenericXML_generator @tablename
    exec ('drop table '+@tablename)
    

    更好的是,编写一些代码来自动生成触发器和系统表中的所有XML生成代码。即生成XML的代码生成。

    推荐文章