仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 798|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:利用oralce Cursor

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:20:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用它开发程序也是非常简单的。”利用Cursor:
declare

RoomIDRoom.RoomID%Type;

RoomNameRoom.RoomName%Type;

cursorcrRoomis

selectRoomID,RoomName

fromRoom;

begin

opencrRoom;

loop;

fetchcrRoomintoRoomID,RoomName;

exitwhencrRoom%notFound;

endloop;

closecrRoom;

end;


3.1在游标利用出口参数
在SQL语句的Where子句中得当利用相干语句简化逻辑,原本必要利用两个游标,把相干出口参数放进到SQL语句的Where子句中,一个就弄定了:

cursorcrRoomis
select
distinct楼层,衡宇用处
fromTT_没有处置的衡宇t
where数据级别>=0
and衡宇处置种别=3
and产权编号=p_产权编号
and拆迁衡宇种别=p_拆迁衡宇种别
and面积>0
and(notp_衡宇用处isnull
and衡宇用处=p_衡宇用处
orp_衡宇用处isnull);

别的一个例子:

CREATEORREPLACEPROCEDUREPrintStudents(
p_MajorINstudents.major%TYPE)AS
CURSORc_StudentsIS
SELECTfirst_name,last_name
FROMstudents
WHEREmajor=p_Major;
BEGIN
FORv_StudentRecINc_StudentsLOOP
DBMS_OUTPUT.PUT_LINE(v_StudentRec.first_name||||
v_StudentRec.last_name);
ENDLOOP;
END;



Oracle带的例子examp6.sql

DECLARE
CURSORbin_cur(part_numberNUMBER)ISSELECTamt_in_bin
FROMbins
WHEREpart_num=part_numberAND
amt_in_bin>0
ORDERBYbin_num
FORUPDATEOFamt_in_bin;
bin_amtbins.amt_in_bin%TYPE;
total_so_farNUMBER(5):=0;
amount_neededCONSTANTNUMBER(5):=1000;
bins_looked_atNUMBER(3):=0;
BEGIN
OPENbin_cur(5469);
WHILEtotal_so_far<amount_neededLOOP
FETCHbin_curINTObin_amt;
EXITWHENbin_cur%NOTFOUND;
/*Ifweexit,theresnotenoughto*
*satisfytheorder.*/
bins_looked_at:=bins_looked_at+1;
IFtotal_so_far+bin_amt<amount_neededTHEN
UPDATEbinsSETamt_in_bin=0
WHERECURRENTOFbin_cur;
--takeeverythinginthebin
total_so_far:=total_so_far+bin_amt;
ELSE--wefinallyhaveenough
UPDATEbinsSETamt_in_bin=amt_in_bin
-(amount_needed-total_so_far)
WHERECURRENTOFbin_cur;
total_so_far:=amount_needed;
ENDIF;
ENDLOOP;
CLOSEbin_cur;
INSERTINTOtempVALUES(NULL,bins_looked_at,<-binslookedat);
COMMIT;
END;





--Createdon2004-8-9byADMINISTRATOR
declare
--带有变量的Cursor
cursorcrBooks(c_bookTitlevarchar2)is
select*
frombooksa
wherea.titlelikec_bookTitle||%;
begin
forv_BooksincrBooks(Oracle8)loop
dbms_output.put_line(v_Books.author1);
endloop;
end;如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL。
老尸 该用户已被删除
沙发
发表于 2015-1-18 13:08:54 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-22 05:43:37 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
只想知道 该用户已被删除
地板
发表于 2015-1-30 23:18:02 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
兰色精灵 该用户已被删除
5#
发表于 2015-2-6 16:46:50 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
蒙在股里 该用户已被删除
6#
 楼主| 发表于 2015-2-17 09:52:53 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-5 19:24:19 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
爱飞 该用户已被删除
8#
发表于 2015-3-12 12:33:40 | 只看该作者
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-19 22:20:45 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 01:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表