


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精编word文档 下载可编辑oracle相关总结oracle相关总结一、测试oracle安装是否成功安装完oracle如何验证安装是否成功呢?下面介绍测试方法执行操作系统级命令tnspingorcl(假定全局数据库名为orcl)结果如下结果出现ok,说明侦听器配置无误,继续第2步。如果没有出现上图结果,请检查1)使用oraclenetconfigurationassistant检查网络配置(netca命令);2)使用databaseconfigurationassistant检查数据库配置(dbca命令)。执行操作系统级的命令sqlplussys/rootorclassysdba连接成功后输入
2、测试sql语句select1+2+3sumfromdual;结果如下如果结果正确,表明数据库例程安装和启动正常。可以开始用刚安装完的oracle开始其他工作。二、新建用户、表空间并分配权限oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库。创建完数据库后,并不能立即在数据库中建表,必须先创建该数据库的用户,并且为该用户指定表空间。明确要在哪个数据库下建立用户、表空间,就先用dba权限的用户(sys,system等)登录该数据库,再进行以下操作。查找所有数据库文件存放的路径,可根据查到的路径定自己新建表空间数据文件存放的路径。(当然也可以自己定路径,
3、不必参照,可略过此步)select*fromdba_data_files;创建表空间createtablespaceorcl_voicedreading-表空间名datafile-数据库文件保存路径c:oracleproduct10.0oradataorclorcl_voicedreading.dbfsize100m-大小autoextendon;createuserwyli-用户名identifiedbyroot-密码defaulttablespaceorcl_voicedreading;-指定默认表空间分配权限-自动增长创建用户并指定表空间grantdbatowyli;-分配dba权限给用
4、户wyli到此,为数据库新建用户完成,可以用新建的用户以normal身份登录,然后开始在数据库上做建表等工作。三、写oracle存储过程要注意的问题在oracle中,数据表别名不能加as,如selecta.appnamefromappinfoa;-正确selecta.appnamefromappinfoasa;-错误在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。selectaf.keynodeintoknfromappfoundationafwhereaf.appid=aidandaf.foundationid=fid;-有in
5、to,正确编译selectaf.keynodefromappfoundationafwhereaf.appid=aidandaf.foundationid=fid;-没有into,编译报错,提示compilation在利用o.语法时,必须先确保数据库中有该条记录,否则会报出nodatafound异常。可以在该语法之前,先利用selectcount(*)from查看数据库中是否存在该记录,如果存在,再利用o.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段会报错selectkeynodeintoknfromappfoundation
6、whereappid=aidandfoundationid=fid;-正确运行selectaf.keynodeintoknfromappfoundationafwhereaf.appid=appidandaf.foundationid=foundationid;在存储过程中,关于出现null的问题假设有一个表a,定义如下createtablea(idvarchar2(50)primarykeynotnull,vcountnumber(8)notnull,bidvarchar2(50)notnull-外键);如果在存储过程中,使用如下语句selectsum(vcount)intofcountfr
7、omawherebid=xxxxxx;如果a表中不存在bid=xxxxxx的记录,则fcount=null(即使fcount定义时设置了默认值,如fcountnumber(8):=0依然无效,fcount还是会变成null),这样以后使用fcount时就可能有问题,所以在这里最好先判断一下iffcountisnullthenfcount:=0;endif;-运行阶段报错四、企业库连接oracle企业库(1)连接oracle命名空间microsoft.practices.enterpriselibrary.data;中的databasefactory类提供两个方法来创建database对象。用方
8、法databasefactory.createdatabase(string)配置文件示例代码usingmicrosoft.practices.enterpriselibrary.data;usingsystem.data.common;publicboolisexistbackgroundmusic(stringbgmusicname)/创建database实例databasedb=databasefactory.createdatabase(oracle);stringproducename=proce_backgroundmusic_exist;dbcommandcommand=db.g
9、etstoredproccommand(producename);/为command提供参数db.addinparameter(command,parambackgroundmusicname,dbtype.string,bgmusicname);db.addoutparameter(command,outcount,dbtype.int32,4);/执行存储过程db.executescalar(command);intoutcount=(int)db.getparametervalue(command,outcount);if(outcount=0)returnfalse;returntru
10、e;用方法databasefactory.createdatabase()配置文件示例代码usingmicrosoft.practices.enterpriselibrary.data;usingsystem.data.common;publicboolisexistbackgroundmusic(stringbgmusicname)databasedb=databasefactory.createdatabase();stringproducename=proce_backgroundmusic_exist;dbcommandcommand=db.getstoredproccommand(p
11、roducename);db.addinparameter(command,parambackgroundmusicname,bgmusicname);db.addoutparameter(command,outcount,dbtype.int32,4);db.executescalar(command);intoutcount=(int)db.getparametervalue(command,outcount);if(outcount=0)returnfalse;returntrue;dbtype.string,扩展阅读oracle知识点总结oracle知识点总结根据阎赫老师讲义整理zea
12、ljiang1、oracle数据库的安装和配置oracleinternet级数据库sqlserver中小企业级数据库access桌面级数据库oracle的安装注意来源和目标的目录不允许有中文或空格oracle数据库启动时必需开启的后台服务oracleorahome90tnslistener使第三方的软件或语言访问oracleserviceetcoracle的实例crud增删改查注意中的etc是你起的实例的名字oracle的开发工具dos界面的开发平台-运行-sqlplusoracle本身基于dos的平台-运行-sqlplusworacleenterprisemanagerconsolepl/s
13、qldeveloper5创建一个表的完整流程创建一个数数库例子创建一个数据库etc,物理文件放在f:,初始化1m,自增长开启createtablespaceetcdatafilef:etc.dbfsize1mautoextendon;删除表空间droptablespace数据库名称;为该数据库创建一个帐号和密码语法createuser用户名称identifiedby密码defaulttablespace数据库名称注意1、在oracle中账号和数据库one2one绑定2、oracle的密码不允许为纯数字或空3、需要在system账号完成动作修改oracle的账号密码语法alteruser用户id
14、entifiedby新密码用grant权限to用户为该帐户授权语法grant权限名称to用户;撤销权限语法revoke权限名称from用户名;在该帐号下创建表oracle中的事务处理transacation事务特点整体提交(commit)整体回滚(rollback)事务的四个特性原子性不可分割持久性-当数据整整写入到数据库物理文件中后,该数据被持久化隔离性-事务之间相互独立互不干扰一致性-数据安全oracle中的保留点(还原点)关键字savepoint使用方法savepoint名称;如进行保留点回滚rollbacktomark2oracle备份数据表数据createtable备份表名称as查询
15、语句;oracle备份表结构createtableemp_bakasselect*fromempwhere1=2;2、oracle的函数function(系统预定义函数)函数和存储过程相比,在于函数必须有返回值,而存储过程只有输出参数。语法createorreplacefunction函数名称return返回类型aspl/sql语句块例子输入一个员工工号,返回该员工所在部门平均工资createorreplacefunctionfun_demo1(enoemp.empno%type)returnemp.sal%typeasavgsalemp.sal%type;beginselectavg(sal
16、)intoavgsalfromempwhereempno=eno;returnavgsal;end;调用selectfun_demo1(7788)fromdual;publicintadd(intnum1,intnum2)intres=0;res=num1+num2;returnres;单行函数(单值函数)函数有且只有返回1个值|-字符函数substrinstr字符串连接函数concatconcat(字符串1,字符串2)oracle中字符连接操作符号|字符串对齐函数lpad-leftpadding左填充/rpad语法lpad(字符串,预留位置,填充字符)sql:selectlpad(ename
17、,10,)fromemp;字符串截取函数substr-substring语法substr(字符串,截取的起始位置,截取个数)substr(字符串,截取的起始位置)sql:selectsubstr(ename,1,3)fromeemp;字符查找函数instr-innerstring语法instr(字符串,待找的字符,查找的起始位置,出现次数)sql:selectename,instr(ename,t,1,1)fromemp;注意当返回值为0时,字符不存在函数initcap-initialcaptor语法initcap(字符串)sql:selectinitcap(ename)fromemp;函数l
18、ength语法length(字符串)sql:select*fromempwherelength(ename)=5;函数lower/upper语法lower(字符串)sql:selectlower(ename)fromemp;|-日期函数sysdateadd_months函数sysdatesql:selectsysdatefromdual;dual-无实际意义,函数测试或其他测试使用月份差months_between语法months_between(日期1,日期2)sql:select*fromempwheremonths_between(sysdate,hiredate)=144函数last_
19、day语法last_day(日期数据)sql:select*fromempwherelast_day(hiredate)-2=hiredate;函数add_months语法add_months(时间,添加月份)sqlselectadd_months(sysdate,3)fromdual;|-转换函数to_charto_date转换函数to_char语法to_char(时间数据,制定格式)sql:selectto_char(sysdate,yyyy-mm-ddhh24:mi:ssddddday)fromdual;yyyy-mm-dd年月日hh24:mi:ss时分秒(24)d一周第几天ddd一年的
20、第几天day星期几to_date:将文本类型数据按照制定格式转换成时间类型数据语法to_date(具体的时间字符数据,时间字符串格式)to_date(201*-01-19,yyyy-mm-dd)注意oracle中的date字段类型及其特殊|-数学函数absceilfloorabs(n)绝对值ceil(n)向上取值ceilling天花板ceil(1)-2floor(n)向下取值floor地板floor(9)-2mod(m,n)求模取余mod(5,2)-1power(m,n)m的n次方power(2,8)-256round(m,n)四舍五入m待处理数据n精度round(1415,2)-14trun
21、c(m)整数截取trunc(1415)=3sign(m)符号sqrt(m)平方根|-混合函数usernvluser:返回当前登录账号sqlselectuserfromdual;nvl:替空函数语法nvl(字符串,替换后的数据)注意替换后的数据必须与该字段类型保持一致sqlselectename,nvl(comm,0)fromemp;分析函数数据分析和挖掘功能dataminingrankdense_rank作用主要用于排名使用函数rank语法rank()over(orderby字段名称)sql:selectrank()over(orderbysaldesc),ename,salfromemp;若
22、排名相同下一个将跳转sql:selectdense_rank()over(orderbysaldesc),ename,salfromemp;连续语法rank(参数1,参数2)withingroup(orderby字段1,字段2)sql:selectename,rank(2850,blake)withingroup(orderbysal,ename)fromemp;分组函数类似于sqlserver中的聚合函数sumavgcountgroupby分组关键字having条件3、oracle数据库的查询制定区间查询oracle中伪列oracle为每张数据表(包括用户自定义创建的数据表)都自动创建两个位
23、列分别是rowid、rownum通过命令sqldesc表名;-查看表结构rowid:由18个字符组成唯一标识每一行rownum:行号介绍问题使用oracle分层查询以数据结构显示emp表中的人员关系语法selectlpad(ename,level*5,)fromempconnectbypriorempno=mgrstartwithmgrisnull;并集查询部门10的办事员和部门20的经理关键字unionallselect*fromempwheredeptno=10andjob=clerkunionallselect*fromempwheredeptno=20andjob=manager;注意
24、unionall不会消除查询结果中的重复数据,union会消除查询结果中的重复记录交集查询部门10和部门20都有的工作类型关键字intersectselectjobfromempwheredeptno=10intersectselectjobfromempwheredeptno=20;差集查询部门30中有,而部门10中没有的工作类型关键字minusselectjobfromempwheredeptno=30minusselectjobfromempwheredeptno=10;4、oracle数据库的数据对象oracle的数据库对象用户、表、约束、序列、视图、同义词和索引定义但凡使用creat
25、e开头创建的对象称之为数据库对象。锁定/解除用户语法alteruser用户名称accountlock;注意该指令一般在system账号下输入解除用户锁定语法alteruser用户名称accountunlock;sqlalteruserscottaccountunlock;注意oracle11g中scott账号是默认锁定的,需要进行解锁处理。用户授权/撤销grant权限名称to用户名称;撤销用户权限revoke权限名称from用户名;表数据字段的类型数字类型number语法number(长度,精度)number(5,2)数字长度为3,精度为2范围-99999999number(5)数字长度为5,
26、精度为0范围-9999999999number精度默认为0范围-3276732768字符类型varchar2可变长度char字符类型语法varchar2(长度)日期类型datelong数据类型该字段最大存储空间为2gb,该字段不允许添加索引lob数据类型该字段最大存储空间为4gb,该字段不允许添加索引clob大字符类型-文章(小说,cnki)blob大二进制类型-图片、音频、视频.多媒体文件flob文件定位器-内存指针创建数据表的语法结构createtable表名(字段名称1类型约束,字段名称1类型约束,字段名称n类型约束)使用desc表名查看表结构给表添加字段address和telephon
27、e语法altertable表名add(字段名称类型);删除表字段address语法altertable表名dropcolumn字段名称;修改表中已有字段的类型语法altertable表名modify(字段名称新类型);修改表名称语法rename原表名to新表名;约束完整性约束=准确性+一致性约束的四大分类实体完整性约束(行约束)-尽量减少数据表中数据的冗余(重复的数据)技术实施主键约束、唯一约束语法altertable表名addprimarykey(字段名称);altettable表名addunique(字段名称);添加非空约束语法altertable表名modify(字段名称notnull)
28、;域完整性约束(列约束)-达到数据的准确性,控制数据的大小或范围或格式技术实施check检查约束altertable表名addconstraint约束名称check(条件);引用完整性约束(表间约束)-达到数据的一致性技术实施外键约束添加外键约束altertable外键表addconstraint约束名称foreignkey(外键字段)references主键表(主键字段);删除外键约束语法altertable表名dropconstraint约束名称;删除匿名约束语法altertable表名modify(字段名称null);自定义完整性约束-以上三种数据库内置约束不能满足开发人员的需求是,需要
29、开发人员自定一些约束条件技术实施触发器使用sql脚本批量插入数据使用命令sql路径+文件名称sqlf:/a.sql;序列定义oracle中使用sequence来实现字段的自增长功能,和sqlserver中的identity属性类型语法createsequence序列名称startwith起始数字incrementby增长量;用法序列对象通过两个重要的属性进行访问取值.nextval-nextvalue-下一个值例子selectseq_nextvalfromdual;.currval-currentvalue-当前值例子selectseq_currvalfromdual;如何实现其自增长功能通过
30、语法结构将序列对象与对应的数据表进行绑定,实现其自增长功能。例子createtableusers(useridnumber(2),usernamevarchar2(10);createsequenceseq_usersstartwith1incrementby1;insertintousersvalues(seq_users.nextval,alvin);注意oracle建议一个序列对象尽与一张数据表进行绑定技巧createsequence序列名称;默认从1每次增长1视图作用1、简化复杂的sql语句2、提高数据的访问安全性语法createorreplaceview视图名称as复杂的sql查询语
31、句视图是一张虚拟的数据表,在table对象中不存在,只存在于内存中注意若视图由1张基表组成,修改视图将会修改基表数据,若视图由多张表组成,则不会修改基表数据同义词作用oracle中的同义词提供各种数据库对象(表)的别名,目的在于提高数据表访问的安全性,尤其多用户并发访问时。语法createsynonym表的别名for表名;sqlcreatesynonymbak1foremp;扩展公有同义词public语法createpublicsynonym别名for表名;索引作用提高sql查询语句按照制定字段查询的效率语法createindex索引的名称on数据表(字段)例子为hiredate字段添加索引,
32、提高按日期查询的sql语句的效率createindexidx_hireonemp(hiredate)原理空间换效率sql语句索引优化规则不带where条件的sql语句一定不能使用索引在where条件中有索引的字段不能使用函数例子假设我们查询在1987年参加工作的所有员工sqlselect*fromempwhereto_char(hiredate,yyyy)=1987;sqlselect*fromempwherehiredate=to_date(1987,yyyy);在where条件中有索引的字段不能参与运算例子查询在10000天以前参加工作的员工信息sqlselect*fromempwhere
33、sysdate-hiredate10000;sqlselect*fromempwherehiredateselecte.*,d.dnamefromempe,deptdwheree.deptno=d.deptnoandd.dname=accounting;oracle中常用的数据字典oracle是以中以表管表的模式,同时数据字典是有表或视图组成。数据字典的分类user_xxx表示当前用户所拥有的数据库对象all_xxxx表示当前用户与权力查看的数据库对象dba_xxxx表示数据中所拥有的全部对象,只有在超级管理员级别下才可查看。xxxx代表数据库对象的复数形式,例如tablesindexes.5
34、、oracle数据库的多表查询等连接selectemp.ename,dept.dnamefromemp,deptwhereemp.deptno=dept.deptno;使用内连接模式编写内连接innerjoin.on.selectemp.ename,dept.dnamefromempinnerjoindeptonemp.deptno=dept.deptno;分析部门为主显示字段,dept为主表姓名为辅助显示字段,emp为辅助表外连接selectd.dname,e.enamefromempe,deptdwheree.deptno(+)=d.deptno;6、oracle数据库的游标游标curso
35、r游标的分类隐式游标oracle自动应以一个隐式游标名称为sql,该游标不被程序员控制,自动开启、操作及结束。显式游标可供程序员自己创建及操作|-静态游标|-动态游标静态游标loop循环游标/for循环游标=loop循环游标=步骤1创建一个游标cursor游标名称issql查询语句;步骤2开启游标open游标名称;-执行定义的sql查询语句并将结果集合存放到游标中步骤3使用loop循环遍历游标中的数据并进行相应处理loopfetch游标名称into变量;exitwhen游标名称%notfound;.endloop;步骤4关闭游标close游标名称;例子显示部门编号为10的员工姓名declare
36、-步骤1创建一个游标cursormycurisselectenamefromempwheredeptno=10;enemp.ename%type;begin-步骤2开启游标openmycur;-步骤3使用loop循环遍历游标中的数据并进行相应处理loopfetchmycurintoen;exitwhenmycur%notfound;dbms_output.put_line(en);endloop;-步骤4关闭游标closemycur;end;=for循环游标=declare-步骤1创建一个游标cursormycurisselect*fromempwheredeptno=10;erowemp%r
37、owtype;begin-步骤3使用for循环遍历游标中的数据并进行相应处理forerowinmycurloopdbms_output.put_line(erow.ename);endloop;end;动态游标(扩展)作用使用游标变量高度重用(只能使用loop循环)语法结构步骤1声明一个动态游标类型type类型名称isrefcursor;步骤2使用声明号的类型创建一个游标变量游标名称类型名称;步骤3打开游标并且绑定sql语句open游标名称forsql查询语句步骤4使用循环遍历游标中的数据并进行处理loopfetch游标名称into变量;exitwhen游标名称%notfound.数据处理.e
38、ndloop;步骤5重复3步骤6关闭游标close游标名称;例子显示部门30的员工姓名及dept表中全部部门名称declare-声明一个游标类型typecurisrefcursor;-声明游标变量mycurcur;-声明变量erowemp%rowtype;drowdept%rowtype;begin-打开游标openmycurforselect*fromempwheredeptno=30;loopfetchmycurintoerow;exitwhenmycur%notfound;dbms_output.put_line(erow.ename);endloop;dbms_output.put_l
39、ine(=);-打开游标openmycurforselect*fromdept;loopfetchmycurintodrow;exitwhenmycur%notfound;dbms_output.put_line(drow.dname);endloop;-关闭游标closemycur;end;游标所有属性游标名称%属性名称属性名称含义notfound当游标中没有遍历的数据时返回1found当游标中存在有遍历的数据时返回1isopen当游标开启状态时返回1rowcount返回游标影响行数7、oracle数据的pl/sqlpl/sql块语法格式declare声明.变量声明区begin程序开始.执行
40、语句区exception异常处理部分.end;程序结束;变量的声明标量标识符,不区分大小写,先声明再使用变量声明的语法结构标量名称类型;例子declareenonumber(4);edatedate;beginend;属性引用类型|-字段引用类型例子declareenoemp.ename%type;|-行引用类型例子declareerowemp%rowtype;变量的赋值四种方式声明时赋值赋值运算符“:=”例子声明一个变量赋值为2declarenum1number(2):=2;.begin.end;执行区赋值例子声明一个变量赋值为2declarenum1number(2);.beginnum1
41、:=2;.end;对话框赋值-程序与用户之间进行数据交互例子声明一个变量赋值为2declarenum1number(2);.beginnum1:=&请输入数字;.end;注意点当输入字符串类型数据的使用书写格式为name:=&姓名;当输入数字类型数据的使用书写格式为age:=&年龄;o.赋值模式例子将emp表中simth的工资复制到变量esal中declareesalemp.sal%type;beginselectsalintoesalfromempwhereename=smith;end;oracle的pl/sql中屏幕输出语句语法dbms_output.put_line
42、(xxxxxxx);将信息输出并换行dbms_output.put(xxxxxxx);输出不换行注意oracle默认关闭屏幕输出功能,需要开发人员输入指令将其功能开启sqlsetserveroutputon;pl/sql中的异常处理语法exceptionwhen异常名称then.处理方式.异常others-任何异常都可捕获执行语句部分循环的使用forwhileloopfor语法结构for循环变量in起始数字.结束数字loop.循环体.endloop;例子1显示数字101(reverse)declareinumber;beginforiinreverse.10loopdbms_output.pu
43、t_line(i);endloop;end;例子1显示乘法口诀declareinumber;jnumber;begin-外层循环控制行数foriin.9loop-内层循环控制个数forjin.iloopdbms_output.put(j|*|i|=|i*j|);endloop;-换行dbms_output.put_line();endloop;end;while循环语法while进入条件loop.循环体.endloop;loop循环语法loopexitwhen推出条件;.循环体.endloop;条件判断语法if条件thenelsif条件thenelseendif;例子模拟一个登录结构,用户名为
44、admin密码为chinasoftdeclareusernamevarchar2(10);passwordvarchar2(10);begin-用户输入账号及密码username:=&账号;password:=&密码;-逻辑判断ifusername=adminandpassword=chinasoftthendbms_output.put_line(欢迎登录|username);elsedbms_output.put_line(账号或密码错误!);endif;end;处理自定义异常例子若用户输入的数字不再110之内则抛出异常步骤1创建一个异常对象在变量声明区输入一下代码expexception
45、;-声明一个异常对象,名称为exp步骤2编写条件判断结构抛出异常在语句执行区编写一下代码if.thenraise异常对象名称;-抛出异常endif;步骤3异常捕获在语句执行区编写exceptionwhen异常对象名称then.处理方式.declarennumber;-用来接收用户输入的数字expexception;-创建一个异常对象beginn:=&数字;-判断ifn10thenraiseexp;-抛出异常endif;dbms_output.put_line(n);exceptionwhenexpthendbms_output.put_line(数字范围不再110之内);end;8、oracl
46、e数据库中的存储过程、函数、数据包oracle中的存储过程oracle中的pl/sql语句块,没有名字,成为匿名的pl/sql块,代码重用性低。需要为pl/sql块起名字,起名后的pl/sql块统称为子程序。子程序的分类存储过程、自定义函数存储过程语法createorreplaceprocedure存储过程名称aspl/sql块如何调用存储过程两种方式1、指令方式-exec存储过程名称;2、使用pl/sql块调用begin存储过程名称;end;带参数的存储过程两大类a)带输入参数b)带输出参数a)带输入参数的存储过程语法createorreplaceprocedure存储过程名称(参数名称1i
47、n类型,.,参数名称n类型)aspl/sql块b)带输出参数的存储过程语法createorreplaceprocedure存储过程名称(参数名称1out类型,.,参数名称nout类型)aspl/sql块例子显示部门10的平均工资(使用输出参数)createorreplaceprocedurepro_demo3(avgsaloutemp.sal%type)asbeginselectavg(sal)intoavgsalfromempwheredeptno=10;end;调用只能使用pl/sql块declaregetsalemp.sal%type;beginpro_demo3(getsal);dbm
48、s_output.put_line(getsal);end;/1、输入指定员工的员工编号,输出其所在部门的其他姓名(存储过程、带参数的游标、输入参数)思路*1、使用sql语句查询7788员工所在部门的其他员工信息select*fromempwheredeptno=(selectdeptnofromempwhereempno=7788)andempno7788;*2、修改成pl/sql块declarecursormycur(enoemp.empno%type)isselect*fromempwheredeptno=(selectdeptnofromempwhereempno=eno)andemp
49、noeno;erowemp%rowtype;tmpemp.empno%type;begintmp:=&工号;forerowinmycur(tmp)loopdbms_output.put_line(erow.ename);endloop;end;*3、修改成为存储过程createorreplaceprocedurepro_demo4(tmpemp.empno%type)ascursormycur(enoemp.empno%type)isselect*fromempwheredeptno=(selectdeptnofromempwhereempno=eno)andempnoeno;erowemp%
50、rowtype;beginforerowinmycur(tmp)loopdbms_output.put_line(erow.ename);endloop;end;*4、调用execpro_demo4(7788);/2、输出制定员工所在部门的平均工资(存储过程、输入参数、输出参数)思路*1、编写sql语句selectavg(sal)fromempwheredeptno=(selectdeptnofromempwhereempno=7788)*2、pl/sql语句declareenoemp.empno%type;esalemp.sal%type;begineno:=&编号;selectavg(sa
51、l)intoesalfromempwheredeptno=(selectdeptnofromempwhereempno=eno);dbms_output.put_line(esal);end;*3、修改为存储过程createorreplaceprocedurepro_demo5(enoinemp.empno%type,esaloutemp.sal%type)asbeginselectavg(sal)intoesalfromempwheredeptno=(selectdeptnofromempwhereempno=eno);end;*4、调用declaretmpemp.sal%type;beginpro_demo5(7788,tmp);dbms_output.put_line(tmp);end;程序包程序包是一个函数或存储过程的集合。程序包的结构第一部分程序包的声明createorreplacepackage包名称as存储过程的声明;自定义函数的声明;end;第二部分程序包主体createorreplacepackagebody包名称as存储过程的实现;自定义函数的实现;例子完成对emp表进行增删改的操作part1:createorreplacepackageemp_packprocedureadd_emp(enoemp.empno%t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新质生产力表现形式
- 辽宁省实验顶级名校2023-2024学年高三上学期期中考试 物理(含答案)
- T型管护理课件
- Radon变换课件教学课件
- 2025年快速拼写短语题目及答案
- 2025年高考数学珠峰题目及答案
- 食品安全知识培训记录图课件
- PS老师课件教学课件
- 食品安全知识培训收费课件
- 国际能源考试题库及答案
- JG/T 270-2010工业构筑物水泥基耐磨材料
- 建立隐患闭环管理制度
- 《多样的美术门类》教学课件-2024-2025学年赣美版(2024)初中美术七年级上册
- T/CECS 10026-2019绿色建材评价建筑门窗及配件
- 企业往来款协议书
- 2025山东中考:生物高频考点
- DB65T 4815-2024 清洗消毒中心内畜禽及其产品运输车辆消毒技术规范
- 《儿童癫痫护理指南》课件
- 数学三年级上册二 观察物体1 看一看(一)教学设计
- 2025-2030中国PEM水电解槽行业现状调查与发展前景规划研究研究报告
- 2025年中国人保财险全系统黑龙江分公司招聘笔试参考题库含答案解析
评论
0/150
提交评论