zoukankan      html  css  js  c++  java
  • SQL2008 操作XML 单字段 变量

      1 USE [NF_UserData]
      2 GO
      3 SET ANSI_NULLS ON
      4 GO
      5 SET QUOTED_IDENTIFIER ON
      6 GO
      7 -- =============================================
      8 -- Author:        IsaacZhang
      9 -- Create date: 2012-09-04
     10 -- Description:    创建插入hubble索引中间表数据的触发器
     11 -- =============================================
     12 CREATE TRIGGER  Trigger_UserDataBibliography_Insert 
     13    ON  Bibliography
     14    AFTER INSERT
     15 AS 
     16 BEGIN
     17     /*声明需要到的变量@hubbleID int,*/
     18     DECLARE 
     19      @BibliographyId uniqueidentifier,
     20      @BibliographyIntId  int,--暂时没有这个字段
     21      @Title  varchar(255),
     22      @AuthorsXml  XML, --需要处理
     23      @Authors varchar(500),--等待XML文件处理完成后写入字段
     24      @SharePersonName   varchar (100),--暂时无这个
     25      @ShareDate   datetime ,
     26      @Media   varchar (255),
     27      @IsFullFile   bit ,--需要在外键中处理
     28      @FileId uniqueidentifier,--获取全文ID
     29      @SharePersonId   int ,--暂时无这个
     30      @BibAbstract   nvarchar (max),
     31      @DOI   nvarchar (128),
     32      @PubulishYear   int ,
     33      @Volume   nvarchar (32),
     34      @Issue   nvarchar (32),
     35      @PageScope   nvarchar (50),
     36      @PageCount   int ,
     37      @TagStr   nvarchar (1000),--外键表中找
     38      @TagIDStr   nvarchar (1000),--外键表中找,与标签字串一一对应
     39      @Keywords    nvarchar(1000),--
     40      @KeywordsXML    XML,
     41      @UserID uniqueidentifier
     42      
     43      --从插入记录中取出一部分数据
     44      SELECT @BibliographyId = BibliographyId,@Title=Title,@AuthorsXml=CAST(Authors AS XML)
     45      ,@UserID =UserID,@ShareDate = ShareDate,@Media=Media,@BibAbstract = Abstract
     46      ,@DOI=DOI,@PubulishYear = [Year],@Volume = Volume,@Issue = Issue
     47      ,@PageScope = PageScope,@PageCount= [PageCount],@KeywordsXML=CAST(Keywords AS XML)
     48       FROM INSERTED
     49         
     50      --判断是否有全文
     51      SET @IsFullFile = 0
     52      DECLARE @i INT
     53      SELECT @i = COUNT(0)FROM NPU_File.dbo.[File] WHERE FileId = @FileId
     54      IF @i>0
     55          SET @IsFullFile = 1
     56      --转换作者信息
     57      SET @Authors = '';
     58      DECLARE @isHas INT;
     59      select  @isHas = @AuthorsXml.exist('declare default element namespace "http://services.notefirst.com/Type/Author";//FullName');
     60      IF @isHas > 0
     61      BEGIN 
     62          --声明一个游标
     63         DECLARE authorCursor CURSOR    
     64         FOR 
     65         select T.C.value('declare default element namespace "http://services.notefirst.com/Type/Author";(../FullName)[1]','varchar(200)'
     66         as authorstr
     67         from @AuthorsXml.nodes('declare default element namespace "http://services.notefirst.com/Type/Author";(//FullName)'as T(C)
     68         OPEN authorCursor
     69         --循环一个游标
     70         DECLARE @tempAuthor NVARCHAR(50);
     71         FETCH NEXT FROM  authorCursor INTO @tempAuthor
     72         WHILE @@FETCH_STATUS = 0
     73         BEGIN
     74         --拼接作者信息,用逗号隔开
     75         SET @Authors += @tempAuthor+',';
     76         FETCH NEXT FROM  authorCursor INTO @tempAuthor
     77         END  
     78          SET @Authors = substring(@Authors,1,len(rtrim(@Authors))-1)
     79         --关闭游标
     80         CLOSE authorCursor
     81         --释放资源
     82         DEALLOCATE authorCursor
     83         
     84      END -- 结束作者信息IF
     85      
     86      --查看标签信息
     87      SET @TagIDStr = '';
     88      SET @TagStr = '';
     89      IF(SELECT COUNT(0FROM dbo.[Relationship-Bibliography^SysTag] WHERE BibliographyId=@BibliographyId)>0
     90      BEGIN
     91         DECLARE tagCursor CURSOR    
     92         FOR SELECT TagId FROM dbo.[Relationship-Bibliography^SysTag] WHERE BibliographyId=@BibliographyId
     93         OPEN tagCursor
     94         --循环一个游标
     95         DECLARE @tempTag NVARCHAR(50),@tempTagID NVARCHAR(50);
     96         FETCH NEXT FROM  tagCursor INTO @tempTagID
     97         WHILE @@FETCH_STATUS = 0
     98         BEGIN
     99             SET @TagIDStr += @tempTagID+',';
    100             SET @TagStr += @tempTag+',';
    101         END
    102         SET @TagIDStr = substring(@TagIDStr,1,len(rtrim(@TagIDStr))-1)
    103         SET @TagStr = substring(@TagStr,1,len(rtrim(@TagStr))-1)
    104         --关闭游标
    105         CLOSE tagCursor
    106         --释放资源
    107         DEALLOCATE tagCursor
    108      END
    109      
    110      --查询关键词信息
    111      SET @Keywords = '';
    112      DECLARE @KeywordsTemp nvarchar(50);
    113      DECLARE @isHasKeywords INT;
    114      select  @isHasKeywords = @KeywordsXml.exist('//string');
    115      IF @isHasKeywords > 0
    116      BEGIN 
    117         --统计有多少关键词
    118          DECLARE @countKeyword Int;
    119         SET  @countKeyword = 0;
    120         select @countKeyword = T.S.value('count(//string)','Int'
    121         from @KeywordsXml.nodes('//ArrayOfString'as T(S)
    122         WHILE @countKeyword>0
    123         BEGIN
    124             
    125             select @KeywordsTemp = T.S.value('(//string[sql:variable( "@countKeyword")])[1]','Int'
    126             from @KeywordsXml.nodes('//ArrayOfString'as T(S)
    127             
    128             SET @Keywords += @KeywordsTemp+','
    129             SET @countKeyword = @countKeyword-1;
    130         END
    131         SET @Keywords = substring(@Keywords,1,len(rtrim(@Keywords))-1)
    132      END -- 结束关键词信息IF
    133      
    134      INSERT INTO dbo.Hubble_UserDataBibliography
    135             ([BibliographyId]
    136            ,[BibliographyIntId]
    137            ,[Title]
    138            ,[Authors]
    139            ,[SharePersonName]
    140            ,[ShareDate]
    141            ,[Media]
    142            ,[IsFullFile]
    143            ,[FileId]
    144            ,[SharePersonId]
    145            ,[BibAbstract]
    146            ,[DOI]
    147            ,[PubulishYear]
    148            ,[Volume]
    149            ,[Issue]
    150            ,[PageScope]
    151            ,[PageCount]
    152            ,[TagStr]
    153            ,[TagIDStr]
    154            ,[Keywords]
    155            ,[UserID])
    156            VALUES(@BibliographyId,
    157            0,
    158            @Title,
    159            @Authors,
    160            '',
    161            @ShareDate,
    162            @Media,
    163            @IsFullFile,
    164            @FileId,
    165            0,
    166            @BibAbstract,
    167            @DOI,
    168            @PubulishYear,
    169            @Volume,
    170            @Issue,
    171            @PageScope,
    172            @PageCount,
    173            @TagStr,
    174            @TagIDStr,
    175            @Keywords,
    176            @UserID);
    177 END
    178 
    179 GO
  • 相关阅读:
    变量的使用
    Matrix Operations
    Modify tensor shape
    张量的创建
    feed_dict 的使用
    安装并配置 HBase2.2.2
    HDFS 编程实践(Hadoop3.1.3)
    TensorFlow的安装
    GUI tkinter (Menu) -弹出菜单
    GUI tkinter (Menu) -下拉菜单
  • 原文地址:https://www.cnblogs.com/zhangpan1244/p/2670698.html
Copyright © 2011-2022 走看看