6.4. PL/SQL语法
PL/SQL语法是Oracle对标准SQL语言功能的扩展,其为Oracle数据库特有的编程语言。通过增加PL/SQL语法,使得Oracle数据库对后台编程功能的支持大大增强,从而可以更好的发挥Oracle数据库的优势。这里,我们仅就Oracle中最基本PL/SQL语法做简要介绍,具体相关详细信息,请参考官方或其他相关资料。
6.4.1. 语句块
语句块是独立的PL/SQL运行单位,这句话,在今后的实践中会逐渐被大家理解,这里不做过多解释,因为没有实践,过多的解释也是徒劳。
1)语法
declare
…
begin
…
exception
…
end;
2)例子
SQL> declare
begin
insert into t_teach(teach_no,name,age,grade)
values('00009','赵六',22,'助教');
commit;
end;
/
6.4.2. 变量
PL/SQL中的变量,和其他编程语言里的变量类似,只是语法不同而已。
1)语法
变量名 变量类型;
或
变量名 变量类型 default 默认值;
或
变量名 变量类型 :=默认值;
2)例子
SQL> set serveroutput on
SQL> declare
v_msg varchar2(100) :='默认值';
begin
DBMS_OUTPUT.PUT_LINE(v_msg);
end;
/
6.4.3. 赋值
1)语法
变量名:=数值;
2)例子
SQL> set serveroutput on
SQL> declare
v_msg varchar2(100) ;
begin
v_msg:='赋值';
DBMS_OUTPUT.PUT_LINE(v_msg);
end;
/
6.4.4. 条件语句(分支语句)
1)语法
If 条件 then
语句;
elsif 条件 then
语句;
else
语句;
end if;
2)例子
SQL> set serveroutput on
SQL> declare
v_score number :=0;
begin
select score into v_score from t_score where rownum<2;
if v_score<60 then
DBMS_OUTPUT.PUT_LINE('不及格');
elsif v_score>=60 and v_score<70 then
DBMS_OUTPUT.PUT_LINE('及格');
elsif v_score>=70 and v_score<80 then
DBMS_OUTPUT.PUT_LINE('中');
elsif v_score>=80 and v_score<90 then
DBMS_OUTPUT.PUT_LINE('良');
else
DBMS_OUTPUT.PUT_LINE('优');
end if;
end;
/
6.4.5. 循环语句
1)语法1
- 语法
while 条件 loop
语句;
end loop;
- 例子
SQL> set serveroutput on
SQL> declare
v_cnt number :=0;
begin
while v_cnt<5 loop
DBMS_OUTPUT.PUT_LINE(rpad('*',v_cnt,'*'));
v_cnt:=v_cnt+1;
end loop;
end;
/
2)语法2
- 语法
loop
fetch 游标名 into 变量名;
exit when 游标名%notfound;
语句;
end loop;
- 例子
SQL> set serveroutput on
SQL> declare
cursor c1 is
select * from t_teach;
v_teach t_teach%rowtype;
begin
open c1;
loop
fetch c1 into v_teach;
exit when c1%notfound;
DBMS_OUTPUT.PUT_LINE(v_teach.name);
end loop;
close c1;
end;
/
3)语法3
- 语法
for item in (select语句) loop
语句;
end loop;
- 例子
SQL> set serveroutput on
SQL> declare
begin
for item in (select * from t_teach) loop
DBMS_OUTPUT.PUT_LINE(item.name);
end loop;
end;
/