zoukankan      html  css  js  c++  java
  • SQL SERVER 2008传递表值参数

    在以前的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

  • 相关阅读:
    避免PHP分页中的分页出现非整数的简化代码
    PHP restful 接口
    PHP 连接数据库
    PHP图片上传
    cookie记录用户最后登录时间
    解决 各浏览器不支持display:flex的最简单办法
    PHP 生成验证码
    php文件上传
    H5图片异步拖拽上传
    H5播放器有时获取duration的值为NaN?
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2772434.html
Copyright © 2011-2022 走看看