在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

查询表Production.Location可以看到数据已经插入了。

关于优缺点参考:使用表值参数(数据库引擎)

转载于:https://www.cnblogs.com/bbsno1/p/3262778.html

SQL Server存储过程输入参数使用表值相关推荐

  1. SQL Server存储过程中使用表值作为输入参数示例

    这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...

  2. php mssql 存储过程 输入参数,MSSQL_SQL Server存储过程中使用表值作为输入参数示例,在2008之前如果我们想要将表作 - phpStudy...

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

  3. Microsoft SQL Server 存储过程

    Microsoft SQL Server 存储过程 TRIGGER DDL触发器:主要用于防止对数据库架构.视图.表.存储过程等进行的某些修改:DDL事件是指对数据库CREATE,ALTER,DROP ...

  4. SQL Server存储过程初学者

    In this article, we will learn how to create stored procedures in SQL Server with different examples ...

  5. oracle如何调试sql,调试oracle与调试sql server存储过程

    [IT168 技术]关于存储过程的调试,知道方法以后很简单,但在不知道的时候,为了测试一个存储过程的正性,print,插入临时表等可谓是使出了浑身解数,烦不胜烦.下面就把我工作中调试oracle存储过 ...

  6. SQL Server 存储过程中使用raiserror抛出异常

    转自(SQL Server 存储过程中使用raiserror抛出异常 ) 一 系统预定义错误代码 SQL Server 有3831个预定义错误代码,由master.dbo.sysmessages 表维 ...

  7. sql server存储过程基本写法

    sql server存储过程的优点 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.当对数据 ...

  8. SQL server 存储过程的建立和调用

    SQL server 存储过程的建立和调用 存储过程的建立和调用 --1.1准备测试需要的数据库:test,数据表:物料表,采购表 if not exists (select * from maste ...

  9. db2 删除存储过程_数据库教程-SQL Server存储过程使用及异常处理

    SQL Server存储过程 存储过程(Procedure)是数据库重要对象之一,也是数据库学习的重点之一.本文,我们以SQL Server为例对存储过程的概念.定义.调用.删除及存储过程调用异常等通 ...

最新文章

  1. 微软好绝情:Windows 7再无重大更新!
  2. 周五晚上看了变形金刚
  3. t430装Linux双系统,thinkpad T430s 在win8上安装ubuntu双系统(UEFI开启)
  4. 用8小时工作,用24小时思考
  5. 2020牛客暑期多校训练营(第六场)
  6. Linux USB札记
  7. 分布式改造剧集三:Ehcache分布式改造
  8. 【转】React Vue MVC MVVM MVP
  9. 平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡
  10. 小白成长建议(9)-苞丁解牛
  11. python定义数据框大小_python – 如何设置框架的最小和最大高度或宽度?
  12. 蓝桥杯2015年第六届C/C++B组省赛第八题-移动距离
  13. OpenGL超级宝典(第7版)之VS2019使用sb7框架搭建自己的程序
  14. Project 3 :Python爬虫源码实现抓取1000条西刺免费代理IP-HTTPS并保存读取
  15. 分析BarTender的SDK帮助文档
  16. BiShop 模式识别与机器学习
  17. 移动网络安装测试软件,adsl网速测试(中国移动宽带专用测速软件)
  18. 改变人类命运的造人计划
  19. 或是独体字吗_知识:贝是独体字吗什么结构
  20. 左岸读书-知识分子的典型

热门文章

  1. docker 容器访问宿主机的解决方式
  2. java 捕获异常并存入数据库_java异常处理,报异常的话怎么处理对象值,并持久化到数据库中...
  3. 发送快递:配置静态路由
  4. ubuntu搭建nginx环境
  5. pytorch.range() 和 pytorch.arange() 的区别
  6. MindSpore部署图像分割示例程序
  7. Centos7 下安装python3及卸载
  8. CentOS7安装Python3详细步骤与Python2共用方法
  9. ImageView / Text 使用 android:state_pressed 没有效果的处理方法
  10. Rendering failed with a known bug ,Please try a rebuild