Array
(
)

Erro ao gerar query dinâmica

Flaviogcmelo
   - 27 jul 2007

Caros Colegas,
Estou a alguns dias com um problema que vem me consumindo muitas horas de trabalho. Estou desenvolvento uma trigger de auditoria para ser disparada sempre que houver uma alteração em um ou mais registros. Os dados anteriores ficam armazenados em uma tabela onde são identificadas a tabela, coluna, valor anterior, identificador do registro (coluna identity na tabela de origem), usuário, data da alteração e um campo identity que é a chave da tabela.
O meu problema esta em retornar o valor do campo identity da tabela de origem, pois estou tendo que gerar uma query dinâmica que deve retornar um valor a ser gravado em uma variavel. Como podem ver no código abaixo eu consigo o nome da coluna identity, faço a instrução que retorna o valor do campo, mas não consigo aramzenar a instrução, devido ao EXEC que não pode ser usado.

DECLARE
@idt_col varchar(40),
@sql varchar(100),
@int int

SELECT @idt_col = (select syscolumns.name
from sysobjects,syscolumns
where sysobjects.type = ´U´
and sysobjects.name = ´Teste´
and sysobjects.id = syscolumns.id
and syscolumns.status & 128 = 128)

SELECT @sql = (´SELECT ´+@idt_col+´ From Inserted´)

SELECT @int = (EXEC(@sql))

Gostaria da ajuda de vocês do forum pra conseguir solucionar esse problema.

Obrigado,

Flávio Melo

Psergio.p
   - 07 ago 2007

Esta usando o 2000 ou 2005?