• 游标加标量函数


    一、今天遇到一个情况,需要在存储过程里面循环取出值,并作用于下一个语句,就接触了下游标:游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条 选择语句相关联,因为游标由结果集(可以是零条、一条或由相关的选择语句检索出的多条记录)和结果集中指向特定记录的游标位置组成。

    游标的使用分为四个基本步骤:声明游标、打开游标、提取数据、关闭游标。

     DECLARE Curse_PrcItemID CURSOR FOR--声明游标(Curosr 为关键字)
                SELECT DISTINCT ItemId FROM   dbo.ChannelSupplyDetails WHERE  sp = @Bracode AND ItemId <> @ItemID
                OPEN Curse_PrcItemID --打开游标
                 WHILE @@FETCH_STATUS = 0 --返回被 FETCH  语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
    			   begin
    				   FETCH next FROM Curse_PrcItemID INTO @temp --提取数据
    					  SELECT @value1 = Isnull(Sum(EmployID), 0) FROM   dbo.InputStore WHERE  itemid = @temp AND employid <> 0 
    					  if @value1>@Count
    					  begin
    						select  @LastId=@temp
    						close Curse_PrcItemID-- 关闭游标
    						break 
    					  end
    					  else
    					  begin
    						select @LastId=0
    					  end
    			   end
    

    二.标量值函数

      标量函数返回一个确定类型的标量值。其返回值类型为除TEXT、NTEXT 、IMAGE、CURSOR、 TIMESTAMP 和TABLE 类型外的其它数据类型。

      使用的时候只需要 [dbo].[Daykc](参数) 就好。

    create  FUNCTION [dbo].[Daykc] --[dbo]这个是不能少的 否则会不识别
    (
     @ItemId  varchar(100)
    )
    RETURNS int  --定义返回类型
    BEGIN
        declare @Count int
        select @Count=isnull(sum(sto),0)  from Channel as a,ChanSup as b where a.Id=b.Id 
        return @Count
    END
    GO

      

  • 相关阅读:
    springboot项目使用restTemplate调用php接口返回数据及所遇问题
    idea创建spring项目所遇问题
    关于爬取网站的信息遇到的有关问题
    Hadoop综合大作业
    hive基本操作与应用
    熟悉HBase基本操作
    爬虫大作业
    第三章 熟悉常用的HDFS操作
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
  • 原文地址:https://www.cnblogs.com/ypyhy/p/4810856.html
Copyright © 2020-2023  润新知