• 存储过程和函数的一些范例


    存储过程

    是将栏目从上至下由>拼接,跟导航条类似。例如:首页>信息公开>机构职能

    USE [MiddleHospital] GO

    /****** Object:  StoredProcedure [dbo].[GetSubjectPath]    Script Date: 08/26/2013 15:24:49 ******/ SET ANSI_NULLS ON GO

    SET QUOTED_IDENTIFIER ON GO

    CREATE procedure [dbo].[GetSubjectPath]

    @code varchar(100),@rtn varchar(1000) output

    as

    set @rtn=''

    begin

      declare @tempName varchar(100)

      declare @rows int

      set @rows=1

        declare cursor1 cursor for select name from dbo.GetParentTreeInfoByCode(@code) where issubwebsite=0 order by levels   --声明游标

        open cursor1     --打开游标

      fetch next from cursor1 into @tempName  --@tempName应该就是表中name的值

      while @@fetch_status=0   --让游标指向第一个值

        begin    

          if(@@cursor_rows=@rows)     --当游标的行数等于表的行数(也就是游标指向最后一行)

            begin      

              set @rtn=@rtn+@tempName;     

            end    

          else     

            begin      

              set @rtn=@rtn+@tempName+'>';     

            end    

          fetch next from cursor1 into @tempName  --游标指向下一个

              set @rows=@rows+1   --行数加1

        end

      close cursor1

      deallocate cursor1

    end

    select @rtn as subjectPath

    GO

    同样的功能标量值函数又是怎么做的呢?其实大相近庭

    USE [MiddleHospital] GO

    /****** Object:  UserDefinedFunction [dbo].[GetSubectPathByCode]    Script Date: 08/26/2013 15:32:49 ******/ SET ANSI_NULLS ON GO

    SET QUOTED_IDENTIFIER ON GO

    CREATE FUNCTION [dbo].[GetSubectPathByCode]

    (  

      @code varchar(100)

    )

    RETURNS varchar(1000)

    AS

    begin

      declare @rtn varchar(1000)  

      set @rtn=''

      declare @tempName varchar(100)

      declare @rows int

      set @rows=1  

      declare cursor1 cursor for select name from dbo.GetParentTreeInfoByCode(@code) where issubwebsite=0 order by levels    

      open cursor1    

      fetch next from cursor1 into @tempName  

      while @@fetch_status=0   

        begin    

          if(@@cursor_rows=@rows)     

            begin      

              set @rtn=@rtn+@tempName;     

            end    

          else     

            begin      

              set @rtn=@rtn+@tempName+'>';     

            end    

          fetch next from cursor1 into @tempName    

          set @rows=@rows+1   

        end

      close cursor1

      deallocate cursor1

      return @rtn

    end

    GO

  • 相关阅读:
    pycharm2018.1下载激活(mac平台)
    python 保存登录状态 cookie
    utf-8和utf-8-sig的区别
    AcWing 803. 区间合并
    AcWing 801. 二进制中1的个数
    AcWing 800. 数组元素的目标和
    AcWing 799. 最长连续不重复子序列
    AcWing 795. 前缀和
    AcWing 791. 高精度加法 解题记录
    九州缥缈录 合集序言
  • 原文地址:https://www.cnblogs.com/apriljq/p/3282743.html
Copyright © 2020-2023  润新知