segunda-feira, 3 de novembro de 2008

Salvando resultado de uma procedure em uma variável

Já que o assunto é SQL.

Para salvar o resultado de uma procedure em uma variável,você vai precisar de uma tabela temporária para intermediar o processo.

No SQL 2000, terá que usar tabelas temporárias mesmo.
Ficará algo parecido com isso:
Create Table #TabelaTemp (IdTeste INT)
INSERT INTO @TabelaTemp EXEC MinhaProcedure '1'





Já no SQL 2005, pode usar a variável @TABLE que além de ser mais simples, em geral, é mais performática do que uma tabela temporária.
Vai ficar mais ou menos assim:

DECLARE @TabelaTemp as TABLE (IdTeste INT)
INSERT INTO @TabelaTemp EXEC MinhaProcedure '1'



Depois de inserir os resultados nas tabelas temporárias, basta apenas dar selects com sets e fica tudo resolvido.

Set @Variavel = (select IdTeste from @TabelaTemp ) ou
Set @Variavel = (select IdTeste from #TabelaTemp )


Lembrando que no SQL 2000, depois de usar a tabela temporária, sempre DROPE ela.
A variável @TABLE do SQL 2005 não precisa ser dropada.

Resetando identity em uma tabela

Olá =)
Caso precise resetar o identity de alguma tabela no SQL, basta usar o seguinte comando.
DBCC CHECKIDENT('NomeDaTabela', RESEED, 0)

Sendo que o 0, é o número que o próximo identity deve usar como base. Ou seja, se for 0, o próximo insert vai ser 1. Se for 200, o próximo insert vai ser 201. E assim por diante.

Pra quem não sabe o que é identity, é aquele campo que se auto preenche com um ID (apesar que eu dúvido que alguém não vai saber hahahaha)