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.