网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Qmail日志中为什么会出现“CNAME.
.Oracle10g闪回恢复区详解.
.oracle_sid,server_name,网络连接.
.Oracle 常见问答.
.查看ORACLE数据库信息的一些SQL.
.Oracles XMLDB Study NOTE (1).
.Qmail如何设置一个虚拟域.
.Oracle数据库技术(32).
.用脚本和查询来主动监视Oracle的.
.影响Oracle汉字显示的字符集问题.
.分析数据库的依赖关系.
.在不同字符集的数据库之间导入数.
.用网络卡从并口上启动Linux.
.解析MobiLink实现基于时间戳的分.
.从Unix到Oracle的日期转换.
.快速启动oracle 8i SQL-Plus的好.
.转储控制文件头.
.怎样才能dump Oracle数据库的内部.
.通过Backup Exec实施Oracle来灾难.
.现流行数据库程序开发工具的比较.

关于查询连续3次生子小于21的问题解答

发表日期:2008-2-9



呵呵,前段时间见到一位老兄写了个问题,最近想出了解决方案,但却怎么

也找不到原来的发题的贴子了,找了半天,只好贴在这希望对那位老兄有点帮助

。大概我记得问题是这样的:表名,字段名都是我瞎起的。
一个表pigs,里面有字段生产匹次:numbers,猪号:pig_id,生产批次:

pigbirthday,生产数量:pigsonnum;选出所有连续3次生子数量小于21的猪。
number      pig_id     pigbirthday    pigsonnum
1              11        15              20
2              22        16              22
3              11        17              19
4              33        18              21
5              11        19              18
大概是这个样子的我的过程如下:
1:创建表rightpig用于存放选出连续3次生子数量小于21的猪; 
create table rightpig(pig_id char(6));
2:创建选猪存储过程。
create or replace procedure findpig
is
sums number;  --临时存储连续生产小于21天的次数。
pigsonmums number;--临时存储生产猪的个数。
cursor findallpig is select distinct pig_id from pigs;   -- 从表里选出

--所有猪。
cursor findrightpig(pig_ids   char(6)) is select pigsonnum from pigs 

where pig_id=pig_ids order by pigbirthday;   --从表里选出一头猪的各批次

--生子数量并以批次排序。
begin
open cursor findallpig;
fetch findallpig into pigids;     --从表里逐一选出猪的id号并存入变量

pigids;
loop
open cursor findrightpig(pigids);  --将猪的id号代入游标,按出生批次先后

--选出猪的各批次生子数量并放入变量pigsonnums。
fetch findrightpig into pigsonnums;
sums=0;
loop
if pigsonnums<21 then   --假如生子数量小于21则累计批次加一;
sums=sums+1;
if sums>3 then          --假如连续3次则将此猪插入表rightpig,并退出这只


--猪的循环;
insert into rightpig
values('pigids'); 
exit loops;
end if;
else sums=0;         --假如生子数量大于21则将累计批次置零,并继续查询。
end if;
end loop;
close cursor findrightpig;
end loop;
end cursor findallpig;
end;
希望大家帮助指正。
上一篇:Oracle快速入门 人气:651
下一篇:oracle 10g中的正则表达式 人气:1118
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐