zoukankan      html  css  js  c++  java
  • 【转】fetch next from的使用

    原表结构:
    HR_NewsPaper
    ------------------
    id
    CompanyName
    CompanyInfo
    PositionName
    PositionNumber
    Requirement
    Note

    为了排除冗余数据,将此表分为两表,表Company用于存储公司相关信息,表HRNewsPaper用于存储招聘信息.
    HRNewsPaper表:
    ------------------
    id
    CompanyId
    PositionName
    PositionNumber
    Requirement
    InfoFrom
    UpdateTime

    Company表:
    ------------------
    id
    CompanyName
    CompanyInfo
    Note
    InfoFrom
    UpdateTime

    排除原表中关于Company的冗余数据的方法有三(仅列出关键语句):
    1. select distinct companyName into tmp from HR_Newspaper

    2. select id, CompanyName, CompanyInfo, Note, getDate() as UpdateTime into CompanyNew from HR_Newspaper t1
    where checksum(*) = (select top 1 checksum(*) from HR_Newspaper where CompanyName = t1.CompanyName)

    3. select min(id) as id, CompanyName, min(CompanyInfo) as CompanyInfo, min(Note) as Note, getdate() as UpdateTime into NewCompany
    from HR_Newspaper group   by   CompanyName

    使用FETCH NEXT循环取出相关数据并插入新表:
    DECLARE @CompanyName varchar(256)
    declare @CompanyInfo varchar(4000)
    declare @PositionName varchar(60)
    declare @PositionNumber int
    declare @Requirement varchar(4000)
    declare @Note varchar(4000)
    DECLARE @id int
    DECLARE @tmpHrId int
    declare @counter int
    DECLARE @i int
    set @id = 1
    set @i = 1
    select @counter = count(CompanyName) from HR_NewsPaper

    DECLARE hr_cursor CURSOR FOR
    SELECT id, CompanyName,CompanyInfo,PositionName,PositionNumber,Requirement,Note FROM HR_NewsPaper

    OPEN hr_cursor

    FETCH NEXT FROM hr_cursor
    INTO @id, @CompanyName,@CompanyInfo,@PositionName,@PositionNumber,@Requirement,@Note

    WHILE @@FETCH_STATUS = 0
    BEGIN

       PRINT Convert(varchar(4), @id) + ','+ @CompanyName +','+ @PositionName
       select @i = id from COMPANY where CompanyName = @companyName
    --插入数据
       INSERT INTO HRNewsPaper (CompanyId, PositionName, PositionNumber, Requirement)
       VALUES (@i, @PositionName, @PositionNumber, @Requirement)
       -- This is executed as long as the previous fetch succeeds.
       FETCH NEXT FROM hr_cursor
       INTO @id, @CompanyName,@CompanyInfo,@PositionName,@PositionNumber,@Requirement,@Note
    END

    CLOSE hr_cursor
    DEALLOCATE hr_cursor

  • 相关阅读:
    统计知识选讲(二)——主成分分析(PCA)的推导和应用
    统计知识选讲(一)——主成分分析(PCA)的思想
    数模学习笔记(八)——遗传算法
    数模学习笔记(六)——灰色系统
    数模学习笔记(五)——BP神经网络
    数模学习笔记(四)——AHP
    数模学习笔记(三)
    数模学习笔记(二)
    推荐决策 对比user-based 和item-based推荐算法
    Mysql事件学习
  • 原文地址:https://www.cnblogs.com/vic_lu/p/2840007.html
Copyright © 2011-2022 走看看