none
Parâmetro TABLE dinâmico em PROCEDURE RRS feed

  • Pergunta

  • Boa noite mais uma vez pessoal!

    Tenho trabalhado num sistema que utiliza de uma trigger em cada tabela, as quais são responsáveis por criar uma manutenção de histórico de dados e respectiva versionalização.

    Com um tremendo trabalho, consegui tornar essas triggers dinâmicas, sendo necessário somente informar o parâmetro 'NOME DA TABELA'...O resto ela faz tudo devidamente sozinha...

    Porém, seria uma redundância tremenda copiar e colar o mesmo código para mais de 35 tabelas do sistema!

    Pensei então, obviamente, em centralizar o código tudo numa só procedure!

    Porém, há a necessidade indispensável de recuperar dados das sessões temporárias DELETED e INSERTED das triggers! Então, já que vou fazer uma procedure, preciso passar os dados de DELETED e INSERTED também como parâmetro desta! Só que os DELETED's e INSERTED's são com certeza diferentes para cada tabela...

    Gostaria de pedir um apoio então na forma de como eu poderia estar consolidando a determinação deste parâmetro table dinâmico na procedure, de modo que eu possa trabalhar com informações de DELETED e INSERTED fora do âmbito de uma trigger!?

     

    Desde já agradeço a todos pela atenção,

     

    ABRAÇOS!

     

    quarta-feira, 29 de agosto de 2007 00:25

Respostas

  •  

    E aí Elber!!

     

    Olha... no SQLs não tem como passar uma variável table. Então, por enquanto a opção passar por um String, que pode ter os dados separados por vírgula ou então por XML.

     

     

    Abraço

    quarta-feira, 29 de agosto de 2007 01:39

Todas as Respostas

  •  

    E aí Elber!!

     

    Olha... no SQLs não tem como passar uma variável table. Então, por enquanto a opção passar por um String, que pode ter os dados separados por vírgula ou então por XML.

     

     

    Abraço

    quarta-feira, 29 de agosto de 2007 01:39
  • Sky,

     

    Concordo com o Alexandre, realmente uma table não pode ser passada como parâmetros.

    quarta-feira, 29 de agosto de 2007 11:36
  • humm...que terrível...

    Será que vale a pena redundir os códigos ou trabalhar com essa procedure?

    quinta-feira, 30 de agosto de 2007 21:02
  •  

    Olha, a idéia da procedure é interessante, mas deverá implementar de uma forma que consiga passar as informações desejadas.

     

    Faz o seguinte, dá uma lida nesse post, pode ser que lhe dê uma luz:

    http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=52356

     

     

    Eu já implementei códigos baseado nele.

     

    Abraço

    sexta-feira, 31 de agosto de 2007 03:14
  • A uns 2 anos atrás o Marcelo Colla me passou um script tenho ele guardado até hj, nunca entendi como ele funciona, mas sei q ele funciona, talves te dê uma luz, o script basicamente faz um select em uma tabela onde o campo é um dado dinâmico, talves vc consiga adaptar para fazer funcionar com uma tabela dinamicamente.

     

    Declare

    @Produto char(1),

    @Sql nvarchar(100),

    @OldRevenueBottonLine nvarchar(15),

    @OldBottonLine float

     

    set @Sql='Select @TT = ' + @PRODUTO + ' from PR_BOTTONLINESGERAL Where

    BOTTONLINE= @OLDREVENUEBOTTONLINE '

    exec sp_executesql @Sql, N'@OLDREVENUEBOTTONLINE VARCHAR(15), @TT float

    output' ,@OLDREVENUEBOTTONLINE, @TT =

    @OLDBOTTONLINE output

    sexta-feira, 31 de agosto de 2007 17:05
  • Mura,

     

    acredito que vc não tenha entendido muito bem a dúvida referente ao tópico.

    De qualquer maneira agradeço mto pela atenção!

     

    Forte abraço,

    quinta-feira, 6 de setembro de 2007 17:22
  • Junior, Alexandre...

     

    Vou dar uma olhada com calma nas orientações e retorno qualquer parecer se for realmente implementar algo...

    Agradeço novamente à força dos dois,

     

    Abraços!

    quinta-feira, 6 de setembro de 2007 17:30
  •  

    Legal Elber,

     

    Mas... Se tiver algum problema, estamos aqui.

     

     

    Abraço

    quinta-feira, 6 de setembro de 2007 18:24