资源描述
,Oracle SQL,与,PL/SQL,编程,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2.1,SQL*PLUS,工具,常用的,SQL*PLUS,命令,,,START,/,LIST,EDIT,CHANGE,APPEND,INPUT,DEL,GET,SAVE,CONNECT,RUN,HELP,PROMPT,EXIT,QUIT,TTITLE,REMARK,CLEAR,CLEAR SCREEN,SPOOL,SPOOL OFF,DESC,DESCRIBE,BREAK ON,BREAK,CLEAR BREAK,HOST,COPY,SHOW,COL,COLUMN,SET,PAUSE,DEFINE,EXECUTE,2.1,SQL*PLUS,工具,常用的,SQL*PLUS,命令,START,功能:执行一个包含多条,SQL,语句的脚,本文件,类似,DOS,的批处理命令;,格式:,SQLstart file_name,或,SQL file_name,说明:,1),file_name,必须制定文件的全路径,否则从缺省路径(,SQL PATH,变量)下读取指定的文件。,2)出现在,SQL,脚本文件中,用来说明指定的脚本文件和执行的脚本文件是在同一目录下,如图所示。在,sql,*plus,中,执行:,SQL,c:TEMPInitSQL.TXT,就会嵌套执行到:,SQL,c:TEMPNestSQL.TXT,2.1,SQL*PLUS,工具,/,功能:重新运行上一次运行的、记录在,SQL BUFFER,内存区中的,SQL,语句,格式:,SQL/,LIST,功能:显示,SQL,缓冲区中的行,格式:,SQL LIST,CHANGE,功能:修改缓冲区当前行的文本。,格式:,SQL CHANGE/old_value/new_value,EDIT,功能:对当前的输入或缓冲区的内容进行编辑,格式:,SQL EDIT,2.1,SQL*PLUS,工具,GET,功能:将一个文件中的,SQL,语句导入到,SQL BUFFER,中,格式:,SQL GET file_name,SAVE,功能:将,SQL BUFFER,中的,SQL,语句保存到一个文件中。,格式:,SQL SAVE file_name,CONNECT,功能:用给出的用户名连接到指定的,Oracle,数据库,。,格式:,SQL CONNECT,user_name/passwddb_alias,EXECUTE,功能:执行一单个的,PL/SQL,命令或存储过程。,格式:,SQL EXECUTE procedure_name,2.1,SQL*PLUS,工具,CLEAR,功能:重新设置或删除制定选项的当前值,格式:,SQL CLEAR Value,CLEAR SCREEN,功能:清除屏幕。,格式:,SQL CLEAR SCREEN,SPOOL,功能:将显示的内容输出到指定文件,格式:,SQL SPOOL file_name,SPOOL OFF,功能:关闭,SPOOL,输出,只有关闭,SPOOL,输出,才会在输出文件中看到输出的内容。,格式:,SQL SPOOL OFF,2.1,SQL*PLUS,工具,RUN,功能:再次执行刚才已经执行的,SQL,语句,同“/”。,格式:,SQL RUN,HELP,功能:显示,SQL*PLUS,命令的帮助。,格式:,SQL HELP,例如:,SQL HELP index,PROMPT,功能:将指定的信息或一个空行输出到屏幕上,。,格式:,SQL PROMPT text,EXIT/QUIT,功能:终止,SQL*PLUS,,并将控制权交给,OS。,格式:,SQL EXIT,SQL QUIT,2.1,SQL*PLUS,工具,HOST,功能:在,SQL*PLUS,中切换到,OS,,并在,WINDOWS,下用,EXIT,命令(在,LINUX,下用!命令)回到,SQL*PLUS,。,格式:,SQL HOST,C:EXIT,COPY,功能:将一个数据库中的一些数据拷贝到另外一个数据库。,格式:,SQL COPY FROM database,|TO database,|FROM database TO database,APPEND,|CREATE,|INSERT,|REPLACE destination_table,(column,column,column,.),USING query,2.1,SQL*PLUS,工具,SHOW,功能:显示,SQL*PLUS,系统变量值或当前的,SQL*PLUS,环境。,格式:,SQL SHOW Option,Option,值:,ALL /,显示当前环境变量的值,ERRORS FUNCTION|PROCEDURE|PACKAGE,|PACKAGE BODY|TRIGGER|VIEW,|TYPE|TYPE BODY schema.name,/,显示当前创建函数、存储过程、触,/发器、包等对象的错误信息,PARAMETERS,parameter_name,/,显示初始化参数的值,RELEASE /,显示数据库的版本,SGA /,显示,SGA,的大小,USER /,显示当前的用户名,2.1,SQL*PLUS,工具,SET,功能:设置一个系统变量,来改变,SQL*PLUS,会话环境,格式:,SET system_variable value,system_variable value,取值:,ARRAY 15|n /,设置从数据库中提取的行数目,AUTO ON|OFF|IMM|n/,设置是否对修改数据进行自动提交,ECHO ON|OFF/,设置,是否显,示,命令,中正在执行的,SQL,语句,EDITF file_name /,设置,EDIT,命令默认的文件名,NEWP 1|n|NONE /,设置页与页之间的分隔,PAGESIZE/LINESIZE,/,设置每页的行数,/,每行的宽度,PAUSE ON|OFF|text,/,是否允许控制终端的滚动,SERVEROUT ON|OFF SIZE n,/,控制是否显示存储过程,TERM ON|OFF,/,控制是否显示启动文件的正常输出,TIME ON|OFF /,控制时间统计信息的显示,TRIM ON|OFF,/,是否允许伪脱机的末尾空格,VER ON|OFF,/,是否显示,SQL,命令中变量的新旧值,2.2,Oracle,的数据类型,数据类型是数据的基本属性,反映了数据所属的种类。,2.3,Oracle,的部分内置函数,1.数值函数(20),2.字符函数(21),3.转换函数(10),4.日期函数(8),5.其他函数(11),函数,说明,ABS(value),CEIL(value),COS(value),COSH(value),EXP(value),FLOOR(value),LN(value),LOG(value),MOD(value,divisor),NVL(value,substitute),求绝对值,求大于或等于,value,的最小整数,求余弦值,求双曲线余弦值,求,e,的,value,次方,求小于或等于,value,的最大整数,求,value,的自然对数,求,value,的以10为底的对数,求模,value,为空时,以,substitute,来代替,2.3,Oracle,的部分内置函数,函数,说明,POWER(,value,exponent,),ROUND(,value,precision,),SIGN(value),SIN(value),SINH(value),SQRT(value),TAN(value),TANH(value),TRUNC(,value,precision,),VSIZE(value),求,value,的,exponent,次方,按,precision,精度4舍5入,value,0返1,SET AUTOCOMMIT ON;,事务,回滚:,ROLLBACK WORK TO SAVEPOINT,使数据库状态回到上次最后提交事务的状态。,2.5,PL/SQL,高级编程,PL/SQL,简介,PL/SQL,特点,P,L/SQL,是,Procedure Language&Structured Query Language,的缩写,一种高性能的基于事务处理的语言。,将变量、控制结构、过程和函数等结构化程序设计的要素引入到,SQL,语言中,编制比较复杂的,SQL,程序,这样用,PL/SQL,语言编写的程序也称为,PL/SQL,程序块。,P,L/SQL,块被命名和存储在,Oracle,服务器中,能被其他,PL/SQL,程序、,SQL,命令或宿主语言程序调用,具有很好的可重用性。,具有模块化结构,能使用过程化语言控制结构,能进行错误处理,P,L/SQL,代码可以使用任何,ASCII,文本编辑器编写,所以对任何,Oracle,能够运行的操作系统都是非常便利的。,2.5,PL/SQL,高级编程,PL/SQL,块结构,2.,PL/SQL,语法,DECLARE,-,变量、常量、游标等声明,declaration statements,BEGIN,-,执行部分,executable statements,EXCEPTION,-,异常处理部分,exception statements,END,;,注:,PL/SQL,块中的每一条语句都必须以分号结束,,SQL,语句可以分行,但分号表示该语句的结束。一行中可以有多条,SQL,语句,他们之间以分号分隔。每一个,PL/SQL,块由,BEGIN,或,DECLARE,开始,以,END,结束。注释由-标示,。,2.5,PL/SQL,高级编程,注:如果没有声明部分,结构就以,begin,关键字开头,如果没有异常处理部分,,exception,关键字就被省略,,end,关键字后面紧跟着一个分号结束该块的定义,仅包含执行部分的结构定义如下,:,Begin,/*,执行部分*,/,End;,如果一个块带有声明和执行部分,但没异常处理部分,如下,Declare,/*,声明部分*,/,Begin,/*,执行部分*,/,End;,有关说明:,PL/,sql,提供了两种特殊的变量,%TYPE,和,%ROWTYPE,,用于声明与表的列相匹配的变量和用户定义数据类型,前者表示单属性的数据类型,后者表示元组的类型,My_name,Emp.ename%TYPE,;,rec_info,emp%rowtype,;,%TYPE,属性,+不必知道,My_name,的真正数据类型 +当数据库中列,ename,列定义改变时,数据库运行时自动修改,在使用游标的过程,每次都用,%FOUND,或,%NOTFOUND,属性检查是否返回成功。即是否还有要操作的行,%FOUND-,-,是否找到游标,此属性表示当前游标是否指向有效一行,如是为,TRUE,,否则为,FLASE,%ROWCOUNT-,-,游标行数,此属性记录了游标抽取过的记录行数,也可以理解成当前游标所在的行号,可以用于作为循环计数器,2.5,PL/SQL,高级编程,变量,变量声明格式:,变量名 数据类型,NOT NULL:=value|DEFAULT value,注意:声明变量强制性的加,NOT NULL,约束条件,变量,初始化时必须赋值,。,变量赋值,直接赋值 :=,间接赋值,SELECT INTO,FETCH INTO,常量与变量,常量,常量声明格式:,常量名,CONSTANT,数据类型,:=Value,注:,P,L/SQL,标识符可为,030,个字符,不区分字母的大小写;,但适当地使用大小写,可以提高程序的可读性。,2.5,PL/SQL,高级编程,预定义错误:,Oracle,提供24种预定义错误,如:,用户定义错误,CURSOR_ALREADY_OPEN,DUP_VAL_ON_INDEX,LOGIN_DENIED,NOT_LOGGED_ON,:,企图打开一个已经打开的游标,:,企图保存重复值到唯一索引约束表,:,非法用户登
展开阅读全文