Oracle实验代码文档格式.doc

上传人:b****1 文档编号:13161924 上传时间:2022-10-07 格式:DOC 页数:10 大小:36KB
下载 相关 举报
Oracle实验代码文档格式.doc_第1页
第1页 / 共10页
Oracle实验代码文档格式.doc_第2页
第2页 / 共10页
Oracle实验代码文档格式.doc_第3页
第3页 / 共10页
Oracle实验代码文档格式.doc_第4页
第4页 / 共10页
Oracle实验代码文档格式.doc_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Oracle实验代码文档格式.doc

《Oracle实验代码文档格式.doc》由会员分享,可在线阅读,更多相关《Oracle实验代码文档格式.doc(10页珍藏版)》请在冰豆网上搜索。

Oracle实验代码文档格式.doc

DECLARE

V_snos.sno%TYPE:

='

&

sno'

;

V_sqtys.sqty%TYPE;

V_snames.sname%TYPE;

BEGIN

V_sqty:

=cx(V_sno,V_sname);

dbms_output.put_line(V_sname||'

供应商'

||V_sno||'

所供应的零件总数为:

'

||V_sqty);

3、定义一个函数:

对于给定的供应商号,判断是否存在,若存在返回0,否则返回-1。

写一段程序调用此函数,若供应商号存在则在spj插入一元组。

CREATEORREPLACEFUNCTIONCZ(cx_snoINs.sno%TYPE)

RETURNNUMBER

IS

jg_snoNUMBER;

SELECTCOUNT(*)INTOjg_snoFROMsWHEREs.sno=cx_sno;

IFjg_sno=0

THEN

RETURN(-1);

ELSE

RETURN0;

endIF;

END;

DECLARE

C_snos.sno%TYPE:

hfNUMBER;

BEGIN

hf:

=CZ(C_sno);

IFhf=0

THEN

dbms_output.put_line(C_sno||'

存在'

);

--INSERTINTOspjVALUES(C_sno,'

ELSE

dbms_output.put_line(C_sno||'

不存在'

ENDIF;

4、定义、调用一个类似于SUM功能的函数:

计算指定供应商编号的供应零件总数量。

CREATEORREPLACEFUNCTIONfun_sum(v_snoINs.sno%TYPE)

RETURNNUMBER

CURSORcur_qtyISSELECTqtyFROMspjWHEREsno=v_sno;

v_sqtyNUMBER:

=0;

tempNUMBER;

FORtempINcur_qtyLOOP

v_sqty:

=v_sqty+temp.qty;

returnv_sqty;

v_snos.sno%TYPE:

v_sqtys.sqty%TYPE;

v_sqty:

=fun_sum(v_sno);

dbms_output.put_line('

供应商号'

||v_sno||'

||v_sqty);

5、将题2中函数改用包定义。

CREATEORREPLACEPACKAGEpkage_spj

FUNCTIONfun_sno(s_snoINs.sno%TYPE,s_snameOUTs.sname%TYPE)

RETURNNUMBER;

endpkage_spj;

CREATEORREPLACEPACKAGEBODYpkage_spj

RETURNNUMBER

AS

v_sqtyNUMBER;

BEGIN

SELECTsname,SUM(qty)INTOs_sname,v_sqtyFROMs,spjWHEREs.sno=spj.snoGROUPBYspj.sno,s.snameHAVINGspj.sno=s_sno;

RETURNv_sqty;

END;

v_snos.sno%TYPE:

='

S1'

v_snames.sname%TYPE;

v_sqtyspj.qty%TYPE;

=pkage_spj.fun_sno(v_sno,v_sname);

dbms_output.put_line(v_sname||'

存储过程的使用

1、定义、调用简单存储过程:

计算所有供应商供应零件总数量并修改供应商相关列sqty。

CREATEORREPLACEPROCEDUREp1

AS

cursorcur_1

is

selectsno,sum(qty)assumqtyfromspjgroupbysno;

forcurincur_1loop

updatessetsqty=cur.sumqtywheres.sno=cur.sno;

endloop;

begin

p1;

end;

2、定义、调用参数存储过程:

查询返回指定供应商的供应零件总数量。

比较与函数不同。

CREATEORREPLACEprocedurep2(sno_snoINs.sno%type,s_snameOUTs.sname%type,v_sqtyouts.sqty%type)

SELECTsname,SUM(qty)INTOs_sname,v_sqtyFROMs,spjWHEREs.sno=spj.snoGROUPBYspj.sno,s.snameHAVINGspj.sno=sno_sno;

v_snames.sname%TYPE;

pro2(v_sno,v_sname,v_sqty);

3、定义、调用存储过程:

插入一个供应商信息(所有信息由参数提供)。

createorreplaceprocedurep3

(s_snoins.sno%type,s_snameins.sname%type,s_statusins.status%type,s_cityins.city%type)

is

v_countnumber;

selectcount(sno)intov_countfromswheres.sno=s_sno;

if(v_count>

0)then

插入的供应商存在'

else

insertintos(sno,sname,status,city)values(s_sno,s_sname,s_status,s_city);

endif;

end;

declare

v_snos.sno%type:

S6'

v_snames.sname%type:

科院'

v_statuss.status%type:

=50;

v_citys.city%type:

十堰'

begin

pro3(v_sno,v_sname,v_status,v_city);

4、定义、调用存储过程:

删除指定代码的零件信息,并给出删除元组数。

CREATEORREPLACEPROCEDUREproc4(p_pnop.pno%type,p_countoutnumber)

deletefromspjwherespj.pno=p_pno;

deletefrompwherepno=p_pno;

v_count:

=sql%rowcount;

p_count:

=v_count;

declare

v_pnop.pno%type:

pno'

proc4(v_pno,v_count);

dbms_output.put_line('

删除元组的数目为:

||v_count);

5、定义、调用存储过程:

修改指定代码项目的其它信息(所有信息由参数提供)。

CREATEORREPLACEPROCEDUREproc5(p_pnop.pno%type,p_pnamep.pname%type,p_colorp.color%type,p_weightp.weight%type)

v_countnumber:

selectcount(p_pno)intov_countfrompwherep.pno=p_pno;

if(v_count=0)

then

dbms_output.put_line('

你所要修改的零件号不存在...'

updatepsetpname=p_pname,color=p_color,weight=p_weightwherep.pno=p_pno;

endif;

v_pnop.pno%type:

v_pnamep.pname%type:

螺丝刀'

v_colorp.color%type:

红'

v_weightp.weight%type:

=15;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1