基本的なDML以外でストアドプロシージャとSQLコードを作成する方法を学び始めたところです。私が最近出くわしたものは、テーブル値パラメーターです。TVPを作成するためのスクリプトを見つけました。これは問題なく機能しますが、理解できないことが2つあります。1つは、いつ使用するかです。TVPが有益である場合の典型的な現実世界のシナリオは何ですか。2つ目は、次のスクリプトからとを削除するbegin
と、どうして同じように機能するのでしょうか。end
それらのキーワードを持つことと持たないことの違いは何ですか?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)
,SampleString varchar(50)
,SampleInt int null
)
go
--create the table data type
create type dbo.SampleDataType as table
(
SampleString 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(SampleString,SampleInt)
select SampleString,SampleInt from @Sample
end
go
--this is the sample script to test that the sproc worked
declare @SampleData as dbo.SampleDataType
insert into @SampleData(SampleString,SampleInt) values ('one',1);
insert into @SampleData(SampleString,SampleInt) values ('two',2);
select * from @SampleData