在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入。

在2008中提供了表值参数。使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样可以省去很多自定义的代码。这样的操作对于存储过程内基于表函数的操作变得非常容易操作。
表值参数是使用用户定义的表类型来声明的。所以使用之前要先定义表类型。

/* 创建表类型.*/CREATE TYPE LocationTableType AS TABLE( LocationName VARCHAR(50), CostRate INT );GO /* 创建一个存储过程以表值参数作为输入. */CREATE PROCEDURE dbo. usp_InsertProductionLocation  @TVP LocationTableType READONLY  AS  SET NOCOUNT ON  INSERT INTO Production.Location      (Name      ,CostRate      ,Availability      ,ModifiedDate)    SELECT *, 0, GETDATE()    FROM @TVP;    GO  /* 声明表值参数变量.*/DECLARE @LocationTVP ASLocationTableType; /* 将数据插入表值变量*/INSERT INTO @LocationTVP(LocationName, CostRate)  SELECT Name, 0.00  FROM Person.StateProvince; /* 将变量传递给存储过程*/EXEC usp_InsertProductionLocation@LocationTVP;GO

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Andorid Dialog 示例【慢慢更新】
  3. Android(安卓)Calendar使用过程中遇到的问题
  4. Android(安卓)PureMVC
  5. Ubunu下搭建android NDK环境
  6. 自定义SeekBar主题
  7. android SQLite数据库基本操作示例
  8. android draw bitmap 示例代码
  9. Android启动时启动Activity 的定义的位置

随机推荐

  1. 在网页程序或Java程序中调用接口实现短信
  2. 抽象批处理SFTP多目的地和自动重试
  3. java漏洞成黑客目标微软呼吁用户更新软件
  4. Thread.currentThread().getName() 和 th
  5. 算法 - 给出一个字符串str,输出包含两个
  6. JavaScript unshift()函数移入数据到数组
  7. 《JavaScript 高级程序设计》学习总结六(1
  8. OSGi 学习之路(4) - osgi的模块化 java在模
  9. POST json和图像到服务器android
  10. linux下安装zookeeper报错Syntax error: