在以前的SQL SERVER中,存储过程和自定义函数只允许传递标量参数。SQL SERVER 2008中允许定义自定义表类型,并传递给存储过程或自定义函数。

CREATE TABLE Inventory

(product_id int PRIMARY KEY,

product_name varchar(50) NOT NULL,

quantity int DEFAULT(0))

GO

INSERT INTO Inventory VALUES(1,'Meta flavored dog shampoo',150)

INSERT INTO Inventory VALUES(2,'Generic canine nail clippers',261)

INSERT INTO Inventory VALUES(3,'Canine paw scissors',89)

GO

现在我们创建一个用户自定义表类型,它描述了我们要传递给存储过程的表:

CREATE TYPE OrderType AS

TABLE(order_item_id int PRIMARY KEY,

product_id int NOT NULL,

quantity int NOT NULL CHECK (quantity>=1),

gift_wrap BIT DEFAULT (0))

我们创建一个存储过程,用到前面定义的表参数

CREATE PROCEDURE UpdateInventory(@myOrder OrderType READONLY)

AS

BEGIN

UPDATE Inventory

set Inventory.quantity-=mo.quantity

From Inventory

  INNER JOIN @myOrder mo

  ON (mo.product_id=Inventory.product_id)

END

注意:READONLY标示表变量,不能省略

下面为调用的实例

DECLARE @myOrder OrderType

INSERT INTO @myOrder VALUES(1,1,10,0)

INSERT INTO @myOrder VALUES(2,3,5,0)

exec UpdateInventory @myOrder

SQL SERVER 2008传递表值参数相关推荐

  1. SQL Server 2008 R2 系统配置检查器的检查参数和妨碍性问题的解决办法

    在安装SQL Server的时候经常会遇到安装失败,这是很伤脑筋的事情,花费很多时间和精力也不一定能够解决. 针对于规则检查导致的安装错误,如果有一份列表能够说明规则以及解决办法将会给我们提高极大的帮 ...

  2. sql server 服务器之间传递消息,SQL Server 2008 Service Broker教程 - 无法接收消息(transmission_status中的异常)...

    我正在学习如何使用SQL Server 2008 R2的Service Broker.在完成单个数据库中的完成对话教程时.在第1课之后,我成功创建了消息类型,合同,队列和服务.在第2课之后,我可能已经 ...

  3. 解析SQL Server 2008的精妙之处

    关键词:SQL Server 2008,仪表盘 安装 SQL Server 2008的设置和安装也有所改进.配置数据和引擎位已经分开了,所以它使创建基本的未配置系统的磁盘图像变得可能了,它使分布到多个 ...

  4. 《Microsoft Sql server 2008 Internals》读书笔记--第九章Plan Caching and Recompilation(10)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  5. SQL Server 2008/2012中SQL应用系列及BI学习笔记系列--目录索引

    SQL Server 2008中的一些特性总结及BI学习笔记系列,欢迎与邀月交流. 3w@live.cn  ◆0.SQL应用系列 1.SQL Server 2008中SQL增强之一:Values新用途 ...

  6. 图解SQL Server 2008入门总结

    一 SQL Server 2008 工具 1 安装好后的SQL Server 2008 开始菜单如下图: 2 进入企业管理器: 在一个数据库下面包含如下图的节点: 数据库关系图 节点包含了数据库中的关 ...

  7. 使用自定义表类型(SQL Server 2008)

    在 SQL Server 2008 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的 ...

  8. sql server linux性能,详细了解SQL Server 2008性能和性能优化

    在SQL Server 2005或更早的版本中的中,表变量是不能作为存储过程的参数的.当多行数据到SQL Server需要发送多行数据到SQL Server ,开发者要么每次发送一列记录,或想出其他的 ...

  9. SQL Server 2008 R2 性能计数器详细列表(三)

    原文:SQL Server 2008 R2 性能计数器详细列表(三) SQL Server,Deprecated Features 对象: 监视指定为不推荐使用的功能: SQL Server Depr ...

最新文章

  1. 古墓:黑夜中不断的断龙石敲击声
  2. vim 环境写 markdown 的插件推荐
  3. 13004.循环数组队列(C语言)
  4. B - 数字三角形问题
  5. 【GNN】图神经网络综述
  6. CASS9.1计算土方量实例
  7. android快速充电实现_Android 8.0 慢充和快充提示语的实现原理
  8. 检查mysql数据库脚本_MYSQL 数据库状态检查脚本(Python版)
  9. Oracle数据库常见版本
  10. WPS/Word参考文献格式规范及引用的方法
  11. SSM框架原理,作用及使用方法
  12. java三角形角度_利用java解决三角形角度问题
  13. 云流化是什么?对软件企业有什么好处?
  14. 向淘宝学运营:移动MM速长成
  15. 计算机自动关机时间如何设置在哪设置方法,Win8设置电脑在某一个时间段自动关机的三种方法...
  16. 人脸识别——OpenCV调取摄像头识别人脸
  17. 编码器SRT协议三种模式(listener, caller, rendezvous)简介
  18. Pt100 三线电桥接法,三线横流源接法分析
  19. 建成 5000 多间「梦想中心」后,他们决定将技术开源
  20. Java--Integer的常量缓存池(默认-128~127数值范围)

热门文章

  1. 欧盟网络安全局发布《供应链攻击威胁全景图》报告(下)
  2. 联合国超10万名员工记录遭泄露
  3. 万豪国际数据再遭泄露影响520万客户,两名员工账户为突破口
  4. ArrayList和LinkedList的插入删除性能差距到底有多大
  5. 利用ScriptEngineManager实现字符串公式灵活计算
  6. ajax向后台传递list参数
  7. ubuntu两个conda安装和切换
  8. Matlab计算矩阵和函数梯度
  9. 函数开始处的MOV EDI, EDI的作用
  10. 注意:不能将文件名叫做email.py,否则会报 ImportError: No module named mime.text