版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4PL/SQLPL/SQLOracle平台中的较为复杂的程序设计语言,在实际的开发应用中PL/SQL。PL/SQL的含PL/SQLProceduralLanguage/SQLOracle对标准数据库SQL语言的扩展,它可在由其他的第提供的工具中使用PL/SQL。PL/SQL语言是一种比较复杂的数据库程序设计语言,它将第四代语言(SQL)的灵活性与第三代语言(C、COBOL、C++、Java等)SQL语言中强大的数据库操作性以及程序设计语言中的过程结构。因此,PL/SQL语言的功能强大,可以用它来解决数据作为对SQL语言的扩展,PL/SQL语言增加了许多程序设计语言中的过程结构。主要包括以下几个IF-ELSE-THEN、CASE和循环语句LOOP、WHILE使用PL/SQL的原首先来了解PL/SQLPL/SQL(emp)并将该信息写入到日志表(e_log)中,其代码如下: e_namee_nameVARCHAR(50); SELECTINTOe_nameFROMempWHEREe_id=&e_id;DBMS_OUTPUT.PUT_LINE‘员工WHENNO_DATA_FOUND--为’||e_name);----DBMS_OUTPUT.PUT_LINE‘员工编号不存在’)--INSERTINTOe_ --VALUES(‘e_iddoesnotexist!’,SYSDATE,中,e_log3个字段,第一个个字段用来记录错误PL/SQL语言的注释部分。PL/SQLPL/SQL还可以用来编写在实际的应用中,有些时候需要处理的业务逻辑可能会比较复杂,PL/SQL用来处理这些复杂的数SQL语言是无法来完成的,因为在SQL语言中,并没有提供用于判断的语句命令。e_idVARCHAR2(15):='e05016';--不存在数据时添加的内容e_nameVARCHAR2(50):=' ageNUMBER(3)deptVARCHAR230财务部';jobVARCHAR2(30):='出纳';salNUMBER(6,2):=4000;UPDATESETjob=job--修改职位WHEREe_id=e_idIFSQL%NOTFOUNDTHEN--INSERTINTOVALUESe_id,e_name,age,dept,job,ENDENDIF;PL/SQL语言是集成在Oracle服务器中的,所以很难将Oracle数据库移植到MySQL数据库获得其他的PL/SQLSQL的全部数据类型和SQL的所有函数,同时支持OraclePL/SQL代码块可以被命名和在Oracle服务器中,具有很好的可重用性的PL/SQL程序具有安全性安全性可以或撤销数据库其他用户PL/SQL程序的能力PL/SQLASCIIOracle的操作系统都是非的调用都必须被OraclePL/SQLPL/SQLPL/SQL语言是作为一种高级的数据库程序设计语言,在编写时也应该遵循一定的编写规范。良好PL/SQLPL/SQLPL/SQL语句块PL/SQL中的注e_nameVARCHAR(50); SELECTINTO--FROMFROMWHEREe_id=&e_id;DBMS_OUTPUT.PUT_LINE‘员工WHENNO_DATA_FOUND为’||e_name);----DBMS_OUTPUT.PUT_LINE‘员工编号不存在’)--INSERTINTOe_ --VALUES(‘e_iddoesnotexist!’,SYSDATE,PL/SQL的代码中,PL/SQLPL/SQL语句块或者过程是用来干PL/SQL语句块或者过程中的主要业务逻辑的处理部分。用于说明该段处理程序的作用以及可PL/SQL中的标示符命名规PL/SQL语言中,标识符名称字符长度最大过30个字符,并且需要以字母开头。要为变量起有意义的名字。也就是说,empId量名就要比c的变量名更有意义。大小写规PL/SQL语言不区分大小写,但是在程序中适当区分字母的大小还是有利于程序的可读性。因PL/SQL语言时字母的大小写可以遵循以下的规则。、PL/SQL的代码缩进格v_numlINT:=v_numlINT:=v_sumINT:=0;WHILEv_num<10v_sumv_sum=v_sum+v_num;v_num:=num+1;ENDPL/SQL中,WHILE..LOOP110的加和,并将结果v_sum。PL/SQL语言中,如果使用条件语句和循环语句,更要注意代码的缩进,否则会影响对程序的阅PL/SQL的基本语句PL/SQL语言中的基本语句块包含三个部分,定义部分、执行部分和异常处理部分。在这三个部分*v_eNameVARCHAR2(50);*SELECTv_eNameINTOv_eNameFROMWHEREe_id=&e_id;DBMS_OUTPUT.PUT_LINE‘员工*WHENNO_DATA_FOUND----为’||----DBMS_OUTPUT.PUT_LINE‘员工编号不存在’)--INSERTINTO --VALUES(‘e_iddoesnotexist!’,PL/SQL和SQL语句来实现业务逻辑;EXCEPTION是异常处理部分,用于处理程序运行时可能EXCEPTION部分后面的代码不会被执行。程序中的&e_id表示SQL*plus然后系统会根据这个员工编号从员工信息表中查找对应的员工信息;DBMS_OUTPUT是Oracle数据库提供的系统包,PUT_LINE是其中包含的一个过程,其作用是输出显示相应的字符串信息。(( --输出显示内PL/SQLBEGINOracle数据库提供的系统DBMS_OUTPUT输出显示一个字符串信息。PL/SQL中的语句proC/C++eidVARCHAR2(15):='e04015';eNameVARCHAR2(50):=' ageNUMBER(3):=21;VARCHAR220男jobVARCHAR220Java开发工程师’;/*insertinto插入员工生信息INSERTINTOeidVARCHAR2(15):='e04015';eNameVARCHAR2(50):=' ageNUMBER(3):=21;VARCHAR220男jobVARCHAR220Java开发工程师’;/*insertinto插入员工生信息INSERTINTOVALUES(eid,eName, , INTOeNameFROMempWHEREeid(--输出员PL/SQL中名语句命名语句块,就是有名字的PL/SQL语句块。它与语句块用法基本相同,也只能执行一次,一eidVARCHAR2(15):='e04015';eNameVARCHAR2(50):=' ageNUMBER(3):=21;VARCHAR220男如果要为语句块加入相应的名字,可以使用“<<”和“>>”对其进行标记。4.2.6小节中的例 eidVARCHAR2(15):='e04015';eNameVARCHAR2(50):=' ageNUMBER(3):=21;VARCHAR220男jobVARCHAR220Java开发工程师jobVARCHAR220Java开发工程师/*insertinto插入员工生信息*/INSERTINTOempVALUES(eid,eName, , INTOeNameFROMempWHEREeid(--输出员 触发 这段PL/SQL语句块使用CREATEOR CETRIGGER关键字定义一个触发器用于实现员CREATEORRE CETRIGGERemp_result_update_cascadeAFTERUPDATEORDELETEOFeidONempFOREACHROWUPDATEt_resultSETeid=:new.eidWHEREeid=:old. 这段PL/SQL语句块使用CREATEOR CETRIGGER关键字定义一个触发器用于实现员CREATEORRE CETRIGGERemp_result_update_cascadeAFTERUPDATEORDELETEOFeidONempFOREACHROWUPDATEt_resultSETeid=:new.eidWHEREeid=:old.emp中执行修改和删除操作的时候,都会触发该触发PL/SQL数据类型之标量类数字类型,数字类型是用来整数或者是浮点数的,它包括以下几种基本的类型,分别型。其中,NUMBER类型是用来定义整数或者是浮点数的,BINARY_INTEGRE字符类型是用来字符数据或者字符串的字符类型主要包括CHARVARCHAR2NCHAR、NVARCHAR2、LONG、LONGRAWRAW。TRUE、FALSE和NULL。布尔变量主要是用来PL/SQL数据类型之复合类PL/SQL的数据类型转PL/SQLPL/SQLv_strVARCHAR2(10);SELECTINTOv_strFROMempWHERE--定义VARCHAR2类型的变DBMS_OUTPUT.PUT_LINEv_strVARCHAR2(10);SELECTINTOv_strFROMempWHERE--定义VARCHAR2类型的变DBMS_OUTPUT.PUT_LINE‘员工工资为’||v_str);--显示员工的工PL/SQL语句块中,DECLAREv_str是VARCHAR2BEGIN部SELECTNUMBER()类型的变量,其结果如下所示。 可以看到员工的工资可以正常的显示。也就是说,PL/S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论