首页 > 新闻系统 > 编程天地 > 文章正文

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

2008-05-27 14:46:25 来源:IT专家网 作者:cyw 点击:
表值参数(Table-valued parameter)是SQL Server2008的一个新特性,在以前的版本中,没有办法把表变量当作一个参数传递给存储过程。微软在SQL Server2008中引入了表值参数的特性,可以实现这项功能。

       表值参数(Table-valued parameter)是SQL Server 2008的一个新特性,在以前的版本中,没有办法把表变量当作一个参数传递给存储过程微软在SQL Server2008中引入了表值参数的特性,可以实现这项功能。

  表值参数有两大优点:一是它不需要为初始的数据加锁,二是它不会导致语句重新编译。

  表值参数的创建和使用包括以下步骤:

  1) 创建表类型

  2) 创建一个可将表类型作为参数来接受的存储过程或函数

  3) 创建表变量并插入数据

  4) 调用该存储过程和函数,并将表变量作为参数传递。

  下面,我们来一步步分解这个创建和使用的过程。首先,我们用以下的DDL SQL语句来创建一个名为“TestDB”的测试数据库:


  USE [master]
  GO
  IF EXISTS (SELECT name FROM sys.databases WHERE name = N'TestDB')
  DROP DATABASE TestDB
  GO
  Create 
database TestDB
  go

  接下来我们使用以下的DDL SQL语句来创建一个名为TestLocationTable的表:


  USE [TestDB]
  GO
  IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TestLocationTable]') AND type in (N'U'))
  DROP TABLE [dbo].[TestLocationTable]
  GO
  USE [TestDB]
  GO
  SET ANSI_NULLS ON
  GO
  SET QUOTED_IDENTIFIER ON
  GO
  SET ANSI_PADDING ON
  GO
  CREATE TABLE [dbo].[TestLocationTable](
  [Id] [
int] NULL,
  [shortname] [char](3) NULL,
  [name] [varchar](100) NULL
  ) ON [PRIMARY]
  GO
  SET ANSI_PADDING OFF
  GO

然后,使用以下的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

9 7 3 1 2 3 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203