zoukankan      html  css  js  c++  java
  • “跨库导数据”、“事故处理”、“创建索引”、“使用触发器”等常用操作

            好久没写过博客了,梳理下基础知识,复习下。

    --跨库导数据
    declare    @ID  int
    declare    @DAYear    char(4)
    declare    @DAMonth   char(2)
    declare    @DADay     char(2)
    declare    @DATime    datetime
    declare    @DAHour    char(2)
    declare    @TemQty    decimal(186)
    declare    @HumQty    decimal(186)
    declare    @Note      nvarchar(50)
    declare    @Lable     int


      declare TemHumCursor cursor for   select   *  
     from openrowset('SQLOLEDB','192.168.250.66';'sa';'tjdx',newcems.dbo.TemHum)
       where  DATime >'2012-11-26 12:12:40.527'  order  by   DATime   desc
       
    open TemHumCursor
    fetch next from TemHumCursor into @ID,@DAYear,@DAMonth,@DADay,@DATime,@DAHour,@TemQty,@HumQty,@Note,@Lable
        while @@fetch_status=0
    begin 
         insert  into  TemHum (DAYear,DAMonth,DADay,DATime,DAHour,TemQty,HumQty,Note,Lable)  values (@DAYear,@DAMonth,@DADay,@DATime,@DAHour,@TemQty,@HumQty,@Note,0)
         
         fetch next from TemHumCursor    into   @ID,@DAYear,@DAMonth,@DADay,@DATime,@DAHour,@TemQty,@HumQty,@Note,@Lable
    end




    close TemHumCursor
    deallocate TemHumCursor
    set nocount on

    select   *  from   TemHum   order  by   DATime   desc 

    go


    --字段值减一
    update ResultList   set  mydatetime  = cast(cast(mydatetime as int)-1 as varchar(50))

    select  *  from  ResultList

    go



    --事故处理


    create table 自动转账机
    (
    卡号 varchar(19primary key,
    金额 money check(金额>=0)
    )
    insert into 自动转账机 values('6222023100051898533',120.00)
    insert into 自动转账机 values('6222023100051898573',0.00)

    go

    create table 自动取款机
    (
    卡号 varchar(19primary key,
    金额 money check(金额>=100)
    )

    delete  from  自动取款机

    go


    insert into 自动取款机 values('6222023100051898533',120.00)
    insert into 自动取款机 values('6222023100051898573',110.00)

    go

    --转账 余额不足 数据回滚 转账失败
    begin try
    begin tran
    update 自动转账机 set 金额 = 金额+500 where 卡号 = '6220203200051898533'
    update 自动转账机 set 金额 = 金额-500 where 卡号 = '6220203200051898573' 
    commit tran --执行成功
    end try
    begin catch
    rollback tran    --余额不足 数据回滚
    end catch

    go

    --取款 余额不足 数据回滚
    begin try
    begin tran
    update 自动取款机 set 金额 = 金额-500 where 卡号 = '6220203200051898573' 
    commit tran --执行成功
    end try
    begin catch
    rollback tran    --余额不足 数据回滚
    end catch

    go

    select * from 自动转账机
    select * from 自动取款机

    go

    drop table 自动转账机
    drop table 自动取款机

    go




    --建表 
     create table card1 (cardid int,remain float)
     go
     create procedure mypro1
     @incount int,
     @outcount int,
     @amount float
     as
      
     begin
     declare @total  float
     select @total=remain   from card1 where cardid=@outcount
     
     
     if @total>=@amount 
     begin
     update card1
     set remain=remain-@amount where cardid=@outcount
     update card1
     set remain=remain+@amount where cardid=@incount
    end
     
     end
     go
     insert card1 values(1,1000.0)
     insert card1 values(2,500.0)
     go
     
      create table card2(cardid int,remain float)
     go
     
     create procedure mypro2
     @outid int,
     @inid int,
     @money float
     as 
     begin 
        declare @total float
        select @total=remain from card2 where cardid=@outid
         begin transaction t1--设回滚点
         if @total>@money 
         begin 
           
              update card2
              set remain=remain-@money where cardid=@outid
              
            
              update card2
              set remain=remain+@money where cardid=@inid
              print'转账成功'
              commit transaction t1--提交事务
      
           
             end
                else 
                begin
                print '转账失败'
                rollback transaction t1--回滚
               end
            
                end
               
              

    go

    insert card2 values(1,1000.0)
    insert card2 values(2,1000.0)
    go
    exec mypro2 2,1,1689
    go
    select * from card2


    go
    --创建索引


    create nonclustered(表示非聚集索引,索引的一种类型) index meterno_alertcode_index on tbl(meterno,alertcode)

    索引的类型:
    nonclustered--非聚集索引
    clustered--聚集索引
    unique--唯一索引


    go

    --触发器
    inserted和deleted 是触发器中的临时表
    inserted 存放的是插入的数据
    deleted 存放的是删除数据


    插入时inserted表中有数据,deleted 中无数据

    更新时,inserted表存放的是更新后的数据,deleted保存的是更新前的数据

    删除时,inserted表中无数据,deleted保存删除的数据

    --创建触发器

    ALTER TRIGGER [dbo].[EnergyDataSumByHourNForCOP]
       ON  [dbo].[EnergyDataSumByHourN] 
       for INSERT,DELETE,UPDATE
    AS 
    BEGIN

    END

      

  • 相关阅读:
    javaWeb之eclipse创建Servlet模板快捷键设置
    DBUtils-对JDBC简单封装的开源工具类库
    JDBC连接池(三)DBCP连接池
    JDBC连接池-C3P0连接
    JavaWeb中jsp九大内置对象 和四大作用域
    JDBC连接池-自定义连接池
    JavaWeb中jdbcproperties配置文件
    python学习之字典(Dictionary)练习
    用$.getJSON() 和$.post()获取第三方数据做页面 ——惠品折页面(1)
    请求转发与请求重定向的区别
  • 原文地址:https://www.cnblogs.com/ssol/p/2796715.html
Copyright © 2011-2022 走看看