zoukankan      html  css  js  c++  java
  • 表变量及临时表数据批量插入和更新 写法

    项目中以前批量插入和更新,因为没有用到EF,所以一直用C#开启事务,拼接sql语句来提交。

    最近发现用表变量提交会很简单。

    简单列出插入和更新语句:

    GO
    一:表类型
    创建表类型:
    CREATE TYPE dbo.stock_details AS TABLE
    (
    id INT,
    goods_id INT,
    number INT
    )
    定义并使用表类型:
    DECLARE @stock_details dbo.stock_details
    --表类型中插入数据
    INSERT INTO @stock_details
            ( id, goods_id, number )
    VALUES  ( 1, -- id - int
              1, -- goods_id - int
              33  -- number - int
              )
    INSERT INTO @stock_details
            ( id, goods_id, number )
    VALUES  ( 11, -- id - int
              11, -- goods_id - int
              133  -- number - int
              )

    二:临时表
    --创建局部临时表 CREATE TABLE #tempTable(id int NOT NULL,NAME INT NOT NULL ,number int NOT NULL) --从表变量数据插入到临时表中 INSERT into #tempTable SELECT id,goods_id,number FROM @stock_details --批量将表变量数据插入数据库中,注意:字段的个数要求一样多 INSERT dbo.tb_stock SELECT id ,goods_id,number,1 FROM @stock_details --批量将表变量中的数据更新到数据库中 UPDATE dbo.tb_stock SET quantity=[@stock_details].number FROM dbo.tb_stock ,@stock_details WHERE dbo.tb_stock.warehouse_id=[@stock_details].id

    前缀“##”为全局临时表,创建全局临时表

    CREATE TABLE ##tempTable(id int NOT NULL,NAME INT NOT NULL ,number int NOT NULL)

    三.表变量
    单独定义一个表变量
    DECLARE @tab TABLE(id INT,NAME NVARCHAR(50))

    对比优点:
    1.表类型,前期已经定义好,后面直接可以定义用就行。
    2.表变量和临时表,都会在物理内存存储,数据量比较小几条用表变量,比较大用临时表。
    3.表变量只在执行语句块有用。
  • 相关阅读:
    MySQL表的四种分区类型
    微信开发配置(Yii框架下的开发)
    一道编程题—输出字符串内重复的数字
    无序数组内查找指定值(快速查找)
    指针
    chmod
    cookie和session的区别
    使用keytool生成证书
    人大金仓修改最大连接数
    数据库链接地址
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/5850189.html
Copyright © 2011-2022 走看看