Olá pessoal, estou iniciando minha etapa no SQL Server 2008 e quero mostrar a vocês alguns novos recursos disponíveis nessa versão que está muito boa.
        Vamos começar a falar um pouco do novo recurso, é a passagem de uma tabela temporária "Table-valued parameters" como parâmetro em uma procedure. Nas versões anteriores tinhamos grande dificuldade em passar muitos parametros para T-SQL, stored procedures e funções, isto não é mais problema agora, com este recurso conseguimos passar uma grande quantidade de valores em apenas um parâmetro do tipo "table".

Seguintes vantagens:
        1 - Podemos definir a ordem de classificação e a chave primária;
        2 - Redução da chamada da procedure no servidor;
        3 - Podemos ter a estrutura diferente da tabela;
        4 - Não necessita ou causa recompilação;
        5 - Não prececisa bloquear inicialmente para preencher os dados do cliente;
        6 - Permite incluir lógicas complexa de negócios em uma única rotina;
        7 - Fornece um modelo de programação muito simples;

 Se voce sentir interessado em saber mais sobre este recurso, então leia abaixo.
 
     A "Table-valued parameters" é o novo tipo de parametro no SQL Server 2008 a pode ser declarado usando "defined table type". A "Table-valued parameters" pode ser usado para enviar multiplas linhas de dados para o T-SQL ou rotinas. A "Table-valued parameters" é como um array de valores no OLE DB and ODBC mas com muito mais flexibilidade. O usuário precisa de permissões como CREATE, GRANT, DENY, ALTER para poder utilizar este recurso.
     A "Table-valued parameters" pode ser criado e executado do T-SQL.

     Abaixo um exemplo simples de como utilizar este recurso.

--<< Cria tabela cliente >>--
create table tb_Cliente
(
 id int primary key,
 nome nvarchar(30),
 endereco nvarchar(50)
)
go

--<< Cria tipo de parametro tabela>>--
create type tbTypeParameter as table
(
 id int primary key,
 nome nvarchar(30),
 endereco nvarchar(50)
)
go

--<< Cria procedure passando como parametro a variável tabela >>--
create procedure usp_table_parameter
 @tbParameter tbTypeParameter readonly
as

 insert into tb_cliente (id, nome, endereco) select id, nome, endereco from @tbParameter
 
 select id, nome, endereco from tb_Cliente
go

--<< Código para declarar e chamar procedure >>--
declare @tbTypeParameter as tbTypeParameter;
insert into @tbTypeParameter values(1,'Nome Cliente', 'Endereço do Cliente');
exec dbo.usp_table_parameter @tbTypeParameter
 go


Restrições:
 1 - O SQL Server não fará a manutenção das estatísticas nas colunas da "Table-valued parameters".
 2 - A "Table-valued parameters" deverá ser sempre passada como READONLY.

Espero que tenham gostado, um grande abraço.