SQL Server 2008表值参数的创建和使用步骤

时间:2008-06-11 22:48:50  来源:  作者:
然后,使用以下的DML SQL语句将数据添加到我们上面创建的表中:

 

USE [TestDB] 
GO 
insert into TestLocationTable ( Id, shortname, Name) select 1, 'NA1', 'NewYork' 
insert into TestLocationTable ( Id, shortname, Name) select 2, 'NA2', 'NewYork' 
insert into TestLocationTable ( Id, shortname, Name) select 3, 'NA3', 'NewYork' 
insert into TestLocationTable ( Id, shortname, Name) select 4, 'EU1', 'London' 
insert into TestLocationTable ( Id, shortname, Name) select 5, 'EU2', 'London' 
insert into TestLocationTable ( Id, shortname, Name) select 6, 'AS1', 'Tokyo' 
insert into TestLocationTable ( Id, shortname, Name) select 7, 'AS2', 'HongKong' 
go

 

下面,我们需要创建一个和TestLocationTable表具有相似表结构的表类型(TABLE TYPE),语句如下所示:

 

 

 

 

接下来,需要创建一个可以将表类型作为一个参数来接受的存储过程,使用的语句如下:

 

USE [TestDB] 
GO 
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].

[usp_InsertProdLocation]') AND type in (N'P', N'PC')) 

DROP PROCEDURE [dbo].[usp_selectProdLocation] 
GO 
CREATE PROCEDURE usp_InsertProdLocation 
@TVP OfficeLocation_Tabetype READONLY 
AS 
SET NOCOUNT ON 
INSERT INTO TestLocationTable Select ID, shortname, name from @TVP 
where convert(varchar(10),id)+shortname+name not in (select 
convert(varchar(10),id)+shortname+name from TestLocationTable) 
GO

 

 

此存储过程将表变量作为导入值接收,并且只插入TestLocationTable中没有的数据。现在,大家可以尝试创建一个表变量,并执行上面创建的存储过程usp_InsertProdLocation,语句如下所示:

 

use TestDB 
go 
DECLARE @TV AS [OfficeLocation_Tabetype] 
INSERT INTO @TV (Id, Shortname, Name) SELECT 12, 'ME1', 'Dubai' 
INSERT INTO @TV (Id, Shortname, Name) SELECT 13, 'ME2', 'Tehran' 
INSERT INTO @TV (Id, Shortname, Name) SELECT 17, 'EA1', 'Bombay' 
INSERT INTO @TV (Id, Shortname, Name) SELECT 18, 'EA2', 'Karachi' 
INSERT INTO @TV (Id, Shortname, Name) SELECT 3, 'NA3', 'NewYork' 
INSERT INTO @TV (Id, Shortname, Name) SELECT 4, 'EU1', 'London' 
exec usp_InsertProdLocation @TV 
go


Tags:


上一篇:没有了   下一篇:没有了

文章评论

共有 0人发表了评论 查看完整内容

推荐教程

最新教程