Oracle之pl/sql入门(ONE)
Oracle之pl/sql入门(ONE)
一)PL/SQL编写规则
定义变量的时候,建议使用v_作为前缀,eg:v_sid,v_name
定义常量的时候,建议使用c_作为前缀
定义游标的时候,建议使用_cursor作为后缀
定义异常的时候,建议使用e_作为前缀
定义pl/sql表的类型的时候,建议使用_table_type作为后缀
定义pl/sql表的变量的时候,建议使用_table作为后缀
定义pl/sql记录类型的时候,建议使用_record_type作为后缀
定义pl/sql记录变量的时候,建议使用_record作为后缀
在pl/sql中不区分大小写,但是为了提高程序的可读性和性能,一般向insert,delete这样的dml或是ddl或是dcl采用大写的形式
pl/sql关键字采用大写形式,如declare,begin,end
数据类型采用大写的形式,标示符和参数采用小写的形式,数据库对象和列采用小写的形式。
二)PL/SQL编写格式
declare begin exception end; /
declare 表示声明部分,在这一部分可以对变量进行变量,常量,游标,复合数据类型的定义,是可选部分。begin是语句执行部分,执行相关的sal或是pl/sql块,这一部分是必须有的。exception,是定义运行部分可能出现的错误,是可选部分。注意在end后边有;,如果要执行这个pl/sql需要使用/进行执行。在pl/sql中注释有两种,一种是单行注释用--,令一种是多行注释使用/* */。
eg:
[sql] SYS@orcl#r 1 DECLARE 2 a NUMBER; 3 BEGIN 4 a:=2+200 ; 5 DBMS_OUTPUT.PUT_LINE(a); 6 EXCEPTION 7 WHEN OTHERS THEN 8 dbms_output.put_line('the error'); 9* END; 202 PL/SQL 过程已成功完成。 SYS@orcl</a>
总结:注意每个关键词如BEGIN后边的值都要有;并且在exception后边要写明when 的一些动作。ru
如:no_data_found,others等等。
三)条件分支语句
if condition1 then statements1 elsif condition2 then statements2 else statements3 end if; eg: [sql] SCOTT@orcl#r 1 DECLARE 2 a NUMBER; 3 BEGIN 4 a:=200; 5 if a>200 then 6 dbms_output.put_line('high'); 7 elsif a=200 then 8 dbms_output.put_line('='); 9 else 10 dbms_output.put_line('lower'); 11* end if; end;
=
PL/SQL 过程已成功完成。
SCOTT@orcl</a>#
四)case语句
case when condition1 then statements1 when condition2 then statement2 ..... else end case; eg: [sql] SCOTT@orcl#declare 2 grade char(1):='B'; 3 appraisal varchar2(20); 4 begin 5 appraisal:= 6 case grade 7 when 'A' then 'z' 8 when 'B' then 'j' 9 when 'C' then 'D' 10 else 'b' 11 end; 12 dbms_output.put_line(appraisal); 13 end; 14 / j
PL/SQL 过程已成功完成。
SCOTT@orcl#
五)循环语句 loop and while and for
loop循环是基本循环格式为:
loop
statements
exit [when condition]
end loop;
每个loop后边的语句都是被执行一次,然后当exit的条件达到的时候就会退出,然后结束循环。
eg:
[sql] SCOTT@orcl#declare 2 total number:=0; 3 salary number :=1800; 4 begin 5 loop 6 total:=total+salary; 7 exit when total>25000; 8 end loop; 9 dbms_output.put_line('total salaryis'||total); 10 end; 11 / total salaryis25200
PL/SQL 过程已成功完成。
SCOTT@orcl#
while循环语句
该语句至少要执行一次循环体内的语句,而对于while循环来说,只有条件为true的时候,才执行循环体内的语句,while语句以while。。。loop开始,以end loop结束。
eg:
[sql] SCOTT@orcl#r 1 declare 2 total number:=0; 3 salary number:=2000; 4 begin 5 while total<200000 loop 6 total:=total+salary; 7 end loop; 8 dbms_output.put_line(total); 9* end; 200000 PL/SQL 过程已成功完成。 SCOTT@orcl#