SQLserver用游标实现循环 和 简单的量值函数

declare @sums numeric(15,2)    -- 这里必须要写上位数,不然默认为整数
declare @cltno varchar(32)
declare @feeMoney numeric(15,2)
declare cur cursor for sELECT  CltNo FROM  memberinfo WHERE CltNo NOT IN ('00029098','00027565')   -- 定义游标
select @sums = 0.0
open cur                                                                            --打开游标
fetch next from cur  into @cltno
while @@fetch_status = 0
begin
  SELECT @feeMoney = fee
        FROM Ns_CMS_Gettable(@cltno,
                                    '2015-10-01',
                                    '22');
select  @sums = @sums + @feeMoney;
fetch next  from cur into @cltno
end
close cur                                                             -- 关闭游标
Deallocate cur                                                        -- 删除游标
print @sums                                                         -- 输出
print cast(@sums as varchar(10)) + 'ddddddd'     -- 把数字类型转换成字符串

 

函数

create FUNCTION [dbo].[ns_cms_getnewfeemoney](@cid int)
returns numeric(15,2)
as
begin
    declare @sums numeric(15,2)
    declare @cltno varchar(32)
    declare @feeMoney numeric(15,2)
    declare cur cursor for sELECT  CltNo FROM  memberinfo WHERE CltNo NOT IN ('00029098','00027565')   -- 定义游标
    begin
    select @sums = 0.0
    open cur
    fetch next from cur  into @cltno
    while @@fetch_status = 0
    begin
      SELECT @feeMoney = fee
            FROM Ns_CMS_Gettable(@cltno,
                                        '2015-10-01',
                                        '22');
    select  @sums = @sums + @feeMoney;
    fetch next  from cur into @cltno
    end
    close cur                                                             -- 关闭游标
    Deallocate cur                                                        -- 删除游标
  end
       RETURN @sums
end 

 

 

 

 

 

 

 

 

时间: 2024-10-21 15:17:30

SQLserver用游标实现循环 和 简单的量值函数的相关文章

【MySql】MySql存储,游标,循环的简单使用

MySql存储,游标,循环 CREATE PROCEDURE `copy_group`(IN v_sourcegroupid int,IN v_destgroupid int,IN v_projectid int) BEGIN       --声明变量       declare v_oldtestcaseid int;       declare v_testcaseid int;       declare v_stepid int;       declare v_id int;    

求一个 sqlserver的游标语句

问题描述 求一个 sqlserver的游标语句 解决方案 这和游标有什么关系? SELECT a1.id a2.score FROM a a1 CROSS APPLY (SELECT SUM(score) score FROM a WHERE id <= a1.id ) a2 解决方案二: DECLARE @n intDECLARE @m intset @n=1set @score=0;select @id=max(id) from Aselect idscore from A where id

Oracle显示游标的使用及游标for循环_oracle

下面给大家介绍在什么情况下用隐式游标,什么情况下用显示游标: 1.查询返回单行记录时→隐式游标: 2.查询返回多行记录并逐行进行处理时→显式游标 --显示游标属性 declare CURSOR cur_emp IS SELECT * FROM emp; row_emp cur_emp%ROWTYPE; BEGIN OPEN cur_emp; FETCH cur_emp INTO row_emp; WHILE cur_emp%FOUND LOOP dbms_output.put_line(row_

[引]SQLServer和Access、Excel数据传输简单总结

access|excel|server|sqlserver|数据 http://www.tongyi.net/article/20031101/200311013786.shtml 所谓的数据传输,其实是指SQLServer访问Access.Excel间的数据. 为什么要考虑到这个问题呢? 由于历史的原因,客户以前的数据很多都是在存入在文本数据库中,如Acess.Excel.Foxpro.现在系统升级及数据库服务器如SQLServer.ORACLE后,经常需要访问文本数据库中的数据,所以就会产生

SQL-SERVER 声明游标

server|游标 SQL-SERVER 声明游标  每一个游标必须有四个组成部分这四个关键部分必须符合下面的顺序:1.DECLARE 游标2.OPEN 游标3.从一个游标中FETCH 信息4.CLOSE 或DEALLOCATE 游标通常我们使用DECLARE 来声明一个游标声明一个游标主要包括以下主要内容: 游标名字 数据来源(表和列) 选取条件 属性(仅读或可修改)其语法格式如下:DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSORFOR sel

SQLServer和Access、Excel数据传输简单总结

access|excel|server|sqlserver|数据 所谓的数据传输,其实是指SQLServer访问Access.Excel间的数据. 为什么要考虑到这个问题呢? 由于历史的原因,客户以前的数据很多都是在存入在文本数据库中,如Acess.Excel.Foxpro.现在系统升级及数据库服务器如SQLServer.ORACLE后,经常需要访问文本数据库中的数据,所以就会产生这样的需求.前段时间出差的项目,就是面临这样的一个问题:SQLServer和VFP之间的数据交换. 要完成标题的需要

mysql存储过程,实现两个游标的循环

今天用php开发网站,遇到一个需求.统计网站关键词的google流量,计算本周某个关键词对于上周的google流量的增长.goole流量统计是通过日志分析程序获取.本打算差值计算也用php实现,但是一想还要循环查询数据库,会造成数据库压力,于是乎编写了一个存储过程. 首先数据结构: CREATE TABLE `mobile_keywords_weeklog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `topdate` date DEFAULT NULL,

c语言-c循环语句简单的问题。。。

问题描述 c循环语句简单的问题... int a=10; do{a--;}while(a--); 为什么是无限循环?小括里到0不停么 解决方案 a--是先用再减,所以一次循环while里面先判断a的值是否是0,再减一. 解决方案二: C/C++ 循环语句的优化第6章 C控制语句:循环简单的循环语句 解决方案三: 虽然a--到0时那一次不进入循环,但紧接着a就到-1了,即为真,又开始循环 解决方案四: int a=10; do{a--;}while(a--); 为什么是无限循环?小括里到0不停么

有关oracle pl/sql编程中游标和循环的问题

问题描述 有关oracle pl/sql编程中游标和循环的问题 题目: 使用循环和游标实现,查询部门编号为10的员工信息,将查询结果按照员工编号从大到小的顺序排列,输出倒数第二行记录. 我的代码: declare empler emp%rowtype; i number:=0; n number; cursor emp_2 is select * from emp where deptno=10 order by empno desc; begin select count(*) into n