联表更新的反思

USE [AutoRent]
GO

/****** Object:  StoredProcedure [dbo].[Usp_expense_alert]    Script Date: 09/16/2015 16:39:05 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER PROC [dbo].[Usp_expense_alert]
    (
      @username VARCHAR(100) ,
      @TB_Exceltotable_lengrentusecarlist AS
      tb_longrentexpenseimportinfoitemalert READONLY ,
      @ReturnMsg VARCHAR(100) OUTPUT ,
      @IsSuccess BIT OUTPUT
    )
AS
    DECLARE @SNID INT
    DECLARE @DriverNum INT
    DECLARE @rowcount INT

    IF ( ( SELECT   COUNT(1)
           FROM     @TB_Exceltotable_lengrentusecarlist
         ) !> 0 )
        BEGIN
            SET @ReturnMsg = ‘导入数据为空‘
            GOTO Fail
        END

    BEGIN TRANSACTION  

    UPDATE  tb_longrentexpenseimportinfo
    SET     carothermoney = t2.carothermoney ,
            cartotalmoney = t2.cartotalmoney ,
            driveraddhours = t2.driveraddhours ,
            driveraddpre = t2.driveraddpre ,
            driverweekendhours = t2.driverweekendhours ,
            driverweekendpre = t2.driverweekendpre ,
            driverholidayhours = t2.driverholidayhours ,
            driverholidaypre = t2.driverholidaypre ,
            divermealmoney = t2.divermealmoney ,
            driverstaymoney = t2.divermealmoney ,
            driverothermoney = t2.driverothermoney ,
            drivertotalmoney = t2.drivertotalmoney ,
            dutyamt = t2.dutyamt ,
            dutyedmoney = t2.dutyamt
     FROM(
         SELECT *
         FROM  @TB_Exceltotable_lengrentusecarlist
     ) t2 LEFT JOIN tb_longrentexpenseimportinfo t1 ON t1.id = t2.id 

    IF ( @@ERROR <> 0 )
        BEGIN
            SET @ReturnMsg = ‘导入失败‘
            ROLLBACK TRANSACTION
            GOTO Fail
        END
    ELSE
        BEGIN
            SET @ReturnMsg = ‘成功导入‘ + CAST(@ROWCOUNT AS VARCHAR(50)) + ‘条数据‘
            COMMIT TRANSACTION
            GOTO Success
        END

    Success:
    SET @IsSuccess = 1
     SET @ReturnMsg =‘修改成功‘
    GOTO EndPoint
    Fail:
    SET @IsSuccess = 0
    GOTO EndPoint
    EndPoint: 

GO
 UPDATE  dbo.TB_ViolationsDetail_Search SET ProvinceID=me.ParentID
                                                from TB_ViolationsDetail_Search t1 left join TB_Metadata me
                                                ON t1.CityID=me.MetadataID
时间: 2024-08-03 02:40:19

联表更新的反思的相关文章

oracle 联表更新

依 a 表 cate_pub_id  为依据 更新 v 表的 cate_pub_id update td_tobrel_cate_pub_attrval v set v.CATE_PUB_ID=(select a.CATE_PUB_ID from td_tobrel_cate_pub_attr a where v.CATE_PUB_ATTR_ID = a.CATE_PUB_ATTR_ID);

sql语句联表更新(从一个数据库中的一张表更新到另一个数据库的另一张表)

一.sql server数据库写法: update a set a.ksgmm=b.ksgmm,a.ksgm=b.ksgm,a.scztm=b.scztm,a.sczt=b.sczt from landsde.sde.jszb a,kyqcldb.dbo.kcl_ksjj b where a.nd=b.nd and a.kqbh=b.kqbh and a.djflbh =b.djflbh 其中landsde.sde.jszb.kyqcldb.dbo.kcl_ksjj是不同数据库下的不同数据表 二

oracle和mysql中update联表批量更新数据的区别

之前碰到一个sql语句,在oracle中可以运行,在mysql上就不行,后来查了好久,发现了他们两个联表批量更新数据的区别如下: (借鉴一下别人的例子) update :单表的更新不用说了,两者一样,主要说说多表的更新复制代码 代码如下: Oracle> Oracle的多表更新要求比较严格,所以有的时候不是很好写,我们可以试试Oracle的游标 update ( select t.charger_id_ new_charger_id_ from t_cus_year_status t left

跨数据库服务器查询和跨表更新

原文地址:http://www.cnblogs.com/zhangziqiu/ 一.摘要 本文通过实际业务场景讲解如何实现跨数据库服务器的数据查询, 以及跨表更新的SQL语法. 二.业务场景 想实现的功能很简单, 在我的本地一个表用来保存省的信息: T_Province 在另外一台服务器上也有一个保存省的表province,其中有我本地没有的provience_name_en和provience_id信息.我希望将它们保存到我的表中. 虽然用程序很容易实现,但是我觉得如果能直接操作数据库的话将更

Spring Hibernate JPA 联表查询 复杂查询

(转自:http://www.cnblogs.com/jiangxiaoyaoblog/p/5635152.html) 今天刷网,才发现: 1)如果想用hibernate注解,是不是一定会用到jpa的? 是.如果hibernate认为jpa的注解够用,就直接用.否则会弄一个自己的出来作为补充. 2)jpa和hibernate都提供了Entity,我们应该用哪个,还是说可以两个一起用? Hibernate的Entity是继承了jpa的,所以如果觉得jpa的不够用,直接使用hibernate的即可

SQL联表查询

数据库中最最常用的语法----select.简单的select语法很直白: select column from table where expression: 从((from)存储数据的地方(table)按照(where)一定的条件(expression)查找(select)我要的数据(column); 但是在实际工作中用到的比较多的往往还是多联表查询,所以在这里记下自己学习多联表查询的心得. 首先聊一聊笛卡尔积,这是几乎所有数据库书籍在讲多联表查询时第一个要讲的东西,我等P民也只能是把笛卡尔

mybatis之联表查询

今天碰到了一个问题,就是要在三张表里面各取一部分数据然后组成一个list传到前台页面显示.但是并不想在后台做太多判断,(因为涉及到for循环)会拉慢运行速度.正好用的框架是spring+springMVC+mybatis,所以很自然的就想到了联表查询. 一开始认为mybatis编写语句很简单,但是在编写的时候遇到了一些细节问题,所以发文记录一下. 先说一下背景: 框架:spring+springMVC+mybatis 表结构: 1.主表 2.从表 从表的uid对应主表的id,并将主表的id设为主

自动化运维Python系列之ForeignKey、relationship联表查询

一对多和多对多 数据库表结构设计是程序项目开发前的重要环节,后期数据库操作都是围绕着这个已经设计好的表结构进行,如果表结构设计有问题,整个程序项目就有存在需要整个推翻重构的风险... 数据库表结构除了简单的单表操作以外,还有一对多.多对多等. 一对多 基于SQLAlchemy我们可以先创建如下结构的2张表,然后来看看具体怎样通过外键ForeignKey或者relationship联表操作 创建表 from sqlalchemy.ext.declarative import declarative

Bootstrap 表单和图片 (内联表单,表单合组,水平排列,复选框和单选框,下拉列表,校验状态,添加额外的图标,控制尺寸,图片)

一.表单 基本格式 注:只有正确设置了输入框的 type 类型,才能被赋予正确的样式. 支持的输入框控件 包括:text.password.datetime.datetime-local.date.month.time.week. number.email.url.search.tel 和 color. <form> <div class="form-group"> <label>电子邮件</label> <input type=&