欢迎来到天天文库
浏览记录
ID:8962763
大小:121.50 KB
页数:19页
时间:2018-04-13
《oracle数据库学习总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Oracle数据库学习总结对于一位程序员来说并不需要完全掌握Oracle的所有知识,毕竟自己不是DBA。在日常开发中也用不到那些命令和工具,但是有些知识点我们还是必须得熟练的掌握它们。比如:一些基本的DDL和DML语句,存储过程,函数,视图,触发器,序列,游标,自定义类型和包。下面我就把这段时间里学习Oracle获得的知识点罗列出来,一是为了方便以后查阅,二是为了和搭档交流学习经验。要适应的一些细节从SqlServer转到Oracle进行数据库编程,第一道门槛就是语法问题。很多很多的问题都是因为语法而产生的,现将它们统统集合起来并将它们一网打尽之。
2、参数赋值SqlServerSet@parameter=5--加不加分号无所谓,这里是用‘=‘号进行赋值的OracleParameter:=5;--必须加分号,并使用加‘:‘的’=‘号进行赋值的PL结构。在SqlServer中,采用的是批处理执行任务的方式,所以可以将多条sql语句选中批量执行,而不用顾忌要在专门的地方声明变量,在专门的地方进行逻辑编码。在Oracle中采用的是PL编程方式,必须在专门的地方声明变量,在专门的地方进行流程编码,经典的PL如下:Declare--这里是专门用来定义变量的Begin--这里是专门用来进行程序编码的End;-
3、-这里必须加分号If语句If***条件thenElseif***条件thenElseEndif;--这里要加分号Case语句CaseWhen***条件thenWhen***条件thenWhen***条件thenElseEndCase;--这里要加分号还可以写成:Case常量--一个字符变量When‘A‘thenWhen‘B‘thenWhen‘C‘thenElseEndCase;--这里要加分号循环结构,要达到循环在Oracle中有3种方式,各有各的好处,你懂的。它们分别如下:第一种Loop****Exitwhen退出条件;Endloop;--要加分
4、号第二种While条件loop****Endloop;--要加分号第三种ForIin1..100loop***Endloop;--要加分号PL结构中的错误处理就像C#中的Try{}Catch{}语句块能捕获错误。写几个例子:HelloWorld级别的错误抛出例子declarestu_infostudent%rowtype;cursorstu_cursorisselect*fromstudent;beginselect*intostu_infofromstudent;exceptionwhenTOO_MANY_ROWSthendbms_output.
5、put_line('行太多');whenothersthendbms_output.put_line('未知错误错误号:'
6、
7、sqlcode
8、
9、'错误信息'
10、
11、sqlerrm);end;手动抛出错误,类似于c#中的throwdeclarestu_infostudent%rowtype;cursorstu_cursorisselect*fromstudent;beginRaise_Application_Error(-20001,'打酱油的错误');--显示抛出错误exceptionwhenTOO_MANY_ROWSthendbms_output.p
12、ut_line('行太多');whenothersthendbms_output.put_line('未知错误错误号:'
13、
14、sqlcode
15、
16、'错误信息'
17、
18、sqlerrm);end;自定义一个错误,并把它手动抛出declaremy_errorException;pragmaException_Init(my_error,-29999);--这里很重要哦beginraisemy_error;--抛出错误exceptionwhenothersthendbms_output.put_line('未知错误错误号:'
19、
20、sqlcode
21、
22、'错误信息'
23、
24、s
25、qlerrm);end;Record类型Oracle中的Record类型类似于c语言中的结构体,主要用来接收Select语句或游标中返回的数据,下面写个例子:declaretypestudent_record_typeisrecord(stu_namestudent.name%type,stu_agestudent.age%type);student_recordstudent_record_type;--这里很重要,不能直接在类型上操作beginselectname,ageintostudent_recordfromstudentwhereid=
26、&id;dbms_output.put_line(student_record.stu_name
27、
28、''
29、
30、student
此文档下载收益归作者所有