SQL SERVER 2008 表值参数

/*

SQL SERVER 2008 表值参数

 

    SQL SERVER 引入了抗议用来将行集传入到存储过程和用户定义函数的表值参数.

这个功能可以使存储过程和函数具有封装多个行集的功能,而不是必须一行一行地调

数据修改过程和穿件多个输入参数来生硬的转化为多行.

 

    我们在应用中经常用到的插入时把代码封装到存储过程中。

   

*/

    CREATE DATABASE TESTDB

   

    USE TESTDB

    GO

   

    CREATE TABLE USERINFO(USERID INT,USERNAME NVARCHAR(50))

    GO

   

    CREATE PROC USP_INSERT_USERINFO

    @ID INT,

    @NAME NVARCHAR(50)

    AS

       INSERT USERINFO

       VALUES(@ID,@NAME)

      

    GO

/* 

    上面的环境建立好后,如果我们需要向表中插入行数,就需要调用次这个

存储过程。在大多数情况下这样的情况是可以接受的,如果你经常需要一次插入多

条。那么就可以用中新增的表值参数类型,可以将要插入的数据传入到表值参

数中,然后通过表值参数一次性插入的表中。

   

    下面演示该参数类型。

*/

    --要使用表值参数,首先要定义用户定义表数据类型。

   

    CREATE TYPE T_USERINFO AS TABLE

    (USERID INT,

     USERNAME NVARCHAR(50)

     )

     GO

     

     --下面可以对上面的过程USP_INSERT_USERINFO进行修改。

     

     CREATE PROC USP_INSERT_USERINFO_NEW

     @USERINFO  T_USERINFO  READONLY --必须使用READONLY 选项声明表值参数

     AS

       INSERT USERINFO

      

       SELECT * FROM @USERINFO

    GO

   

    --一次插入多条数据

   

    DECLARE @USERINFO AS T_USERINFO

   

   

    INSERT @USERINFO VALUES(1001,'小张')

    INSERT @USERINFO VALUES(1002,'小王')

    INSERT @USERINFO VALUES(1003,'小李')

    INSERT @USERINFO VALUES(1004,'小明')

 

    EXEC USP_INSERT_USERINFO_NEW @USERINFO

   

   

    SELECT * FROM USERINFO

/*

    在处理业务时这个表值参数的新功能会很有用。譬如一个处理产品订单的网站,现在可以传入结果集

到一个存储过程中,而不是为每个产品每次调用存储过程。对于繁忙的系统,表值参数减少了应用程序和

数据库服务器之间的交互,从而减少了占用的带宽,数据库端的事务处理更高效。

*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值