- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的服务器维护,企业网站维护,网站维护服务
- (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
 
  
    
| 作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 | 
       表值参数(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 
| 我要申请本站:N点 | 黑客防线官网 | | 
| 专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |