zoukankan      html  css  js  c++  java
  • 游标加标量函数

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

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

     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

      

  • 相关阅读:
    SignalR客户端和服务端编写,winfrom端
    SQL 发送邮件msdb.dbo.sp_send_dbmail
    Stimulsoft打印内容横向,变成竖向,解决方法
    Chrome浏览器所有页面崩溃
    SQL存储过程直接传表
    c#SignalR一次发送最大数据量
    c#USB扫描枪,防止输入框手动输入
    SQLPrompt_9.5.5.9830破解版含注册机_永久激活不掉线
    SQL快捷键设置
    USB HDI 通信
  • 原文地址:https://www.cnblogs.com/ypyhy/p/4810856.html
Copyright © 2011-2022 走看看