资源描述:
《Les17-执行PLSQL语句》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、十七.PL/SQL中的可执行语句目标结束本节课后,应当完成如下目标:辨认PL/SQL语句块中的可执行语句块部分。写出可执行部分的语句描述语句块的嵌套规则执行和测试一个PL/SQL块遵循代码规范PL/SQL语法以及指导语句可以放在几行中.但是关键字不能拆开放在几行中。单个字之间可以用以下符号隔开:空格分隔符PL/SQL语法说明语句可以放在几行中.单个字之间可以用以下符号隔开:空格其它分隔符标识符最多能包含30个字符不能包含保留字,除非用双引号括起来必须以字母打头避免与表名、列名等数据库对象同名PL/SQL语法说明直接量(literals)字符或者日期必须
2、用单引号括起来.数字可以用简单数值或者科学计数法来表示.一个PL/SQL可以由一个单行的斜杠(/)来结束.v_ename:='Henderson';注释代码单行的注视可以用两个减号(--)作为前缀.多行注释用/*和*/包括起来.例子:...v_salNUMBER(9,2);BEGIN/*Computetheannualsalarybasedonthemonthlysalaryinputfromtheuser*/v_sal:=&p_monthly_sal*12;END;--Thisistheendoftheblock在PL/SQL中的SQL函数大部分在SQ
3、L中的函数在PL/SQL中也能用,包括:单行数值函数单行字符函数数据类型转换函数日期函数不能使用的函数:DECODE函数分组函数例如:AVG,MIN,MAX,COUNT,SUM,STDDEV这些函数只能用于PL/SQL中的SQL语句当中,而不能单独使用。与SQL中相同}PL/SQL函数PL/SQL提供大量的函数来帮助操纵数据例子为公司建立邮件列表.转换为小写字母.v_mailing_address:=v_name
4、
5、CHR(10)
6、
7、v_address
8、
9、CHR(10)
10、
11、v_state
12、
13、CHR(10)
14、
15、v_zip;v_ename:=LOWER(v_
16、ename);数据类型转换将数据可自动转换为可比较的类型.不同的数据类型混杂在一个语句中可能引起错误或者降低效率.转换函数:TO_CHARTO_DATETO_NUMBERDECLAREv_dateVARCHAR2(15);BEGINSELECTTO_CHAR(hiredate,'MON.DD,YYYY')INTOv_dateFROMempWHEREempno=7839;END;数据类型转换如果v_date声明为DATE数据类型,那么下面的赋值操作将会产生错误.v_date:='January13,1998';v_date:=TO_DATE('Januar
17、y13,1998','MonthDD,YYYY');为了纠正错误,使用TO_DATE转换函数.块的嵌套和变量作用域在允许的地方,可以使用嵌套语句.可以将PL/SQL块分为小的块,这样一个嵌套块便相当于一个语句.在exception部分也可以包含嵌套块.一个对象的作用域是指程序可以引用到的区域.块的嵌套和变量作用域一个标识符可以在声明它的块,以及它嵌套的子块、过程、函数中引用。一个块可以从包含它的上一级块中寻找变量声明.但不可以从它所包含的子块中寻找.块的嵌套和变量作用域...xBINARY_INTEGER;BEGIN...DECLAREyNUMBER;B
18、EGIN...END;...END;X的作用域Y的作用域例子PL/SQL中的操作符优先级逻辑算术串接(
19、
20、)括号SameasinSQL}例子:增加1的操作.设置一个布尔型值.如果v_empno不为空,则使v_valid值为True.PL/SQL中的操作符v_count:=v_count+1;v_equal:=(v_n1=v_n2);v_valid:=(v_empnoISNOTNULL);使用绑定(Bind)变量在PL/SQL中,如果要引用一个绑定变量,必须加一个冒号(:)前缀例子:VARIABLEg_salaryNUMBERDECLAREv_salemp
21、.sal%TYPE;BEGINSELECTsalINTOv_salFROMempWHEREempno=7369;:g_salary:=v_sal;END;/编程指导要使得程序易于维护,则要遵守如下规则:给代码加注释符合大小写的规范为标识符和其他对象建立命名规范提高程序的可读性代码命名规范避免如下容易产生的混淆:局部变量和参数使用数据库表列的命名方式。数据库表列采用局部变量的命名方式。代码要有缩进为了清楚起见,对每一层次的代码进行缩进.例如:BEGINIFx=0THENy:=1;ENDIF;END;DECLAREv_deptnoNUMBER(2);v_lo
22、cationVARCHAR2(13);BEGINSELECTdeptno,loc