Utilisations de production des parameters de valeur de table

Je viens de commencer à apprendre à écrire des procédures stockées et du code SQL en dehors de la base DML. Quelque chose que j'ai récemment rencontré est des parameters de valeur de table. J'ai trouvé un script pour faire un TVP et ça marche très bien mais il y a deux choses que je ne comprends pas. Un, quand les utiliser. Qu'est-ce qu'un scénario typique du monde réel quand un TVP serait bénéfique? Deuxièmement, comment se fait-il que lorsque je supprime le begin et la end du script suivant, cela fonctionne-t-il de la même manière? Quelle est la différence entre avoir ces mots-keys et non? SQL Server 2008 R2

 use [tempdb] --this is the database table that will be populated create table SampleTable ( id int not null identity (1,1) ,SampleSsortingng varchar(50) ,SampleInt int null ) go --create the table data type create type dbo.SampleDataType as table ( SampleSsortingng varchar(50) ,SampleInt int ) go --the stored procedure takes the SampleDataType as an input parameter create proc SampleProc ( --accepts the TVP as the lone parameter --make sure that the TVP is readonly @Sample as dbo.SampleDataType readonly ) as begin --we simply insert the values into the db table from the parameter insert into SampleTable(SampleSsortingng,SampleInt) select SampleSsortingng,SampleInt from @Sample end go --this is the sample script to test that the sproc worked declare @SampleData as dbo.SampleDataType insert into @SampleData(SampleSsortingng,SampleInt) values ('one',1); insert into @SampleData(SampleSsortingng,SampleInt) values ('two',2); select * from @SampleData 

Une utilisation du monde réel est de paramétrer une clause in .

Lorsqu'une requête a un filter sur (x, y, z, ...) vous n'avez plus besoin de recourir à l' une des methods ici , par exemple en la passant en list délimitée par des virgules, puis en la divisant.

Le BEGIN ... END ne fait aucune différence là. Il définit un bloc. Vous pouvez l'utiliser après une instruction IF , par exemple pour regrouper plusieurs instructions en un seul bloc logique.