仓酷云

标题: MYSQL编程:利用oralce Cursor [打印本页]

作者: 蒙在股里    时间: 2015-1-16 22:20
标题: MYSQL编程:利用oralce Cursor
使用它开发程序也是非常简单的。”利用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
所以你总能得到相应的升级版本,来满足你的需求。
作者: 精灵巫婆    时间: 2015-1-22 05:43
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
作者: 只想知道    时间: 2015-1-30 23:18
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
作者: 兰色精灵    时间: 2015-2-6 16:46
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
作者: 蒙在股里    时间: 2015-2-17 09:52
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者: 飘飘悠悠    时间: 2015-3-5 19:24
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
作者: 爱飞    时间: 2015-3-12 12:33
微软对CLR作了大篇幅的宣传,这是因为数据库产品终于融入.net体系中。最开始我们也是狂喜,感觉对象数据库的一些概念可以实现了。
作者: 金色的骷髅    时间: 2015-3-19 22:20
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2