一、达梦系统包
1、在进行PLSQL说明之前,介绍一下DBMS_OUTPUT 系统包
DBMS_OUTPUT 系统包是为了在 DM 上兼容 oracle 的 DBMS_OUTPUT 系统包。提供将文本行写入内存、供以后提取和显示的功能。为用户从 oracle 移植应用提供便功能上与 oracle 基本一致。
二、PLSQL基本结构
[DECLARE
–declaration statements] ① --声明部分
BEGIN
–executable statements ② --执行部分
[EXCEPTION
–exception statements] ③ --异常处理部分
END;
三、PLSQL之循环
1、首先在disql中打开屏幕显示
set serveroutput on
2、loop
declare
i int :=1;
begin
loop
dbms_output.put_line(i);
i := i+1;
exit when i>100;
end loop;
end;
/
3、while循环
declare
i int :=1;
begin
while i<100 loop
i := i+1;
end loop;
dbms_output.put_line(i);
end;
/
4、 for循环
declare
sum int :=0;
begin
for i in 1..100 loop
sum := sum+i;
end loop;
dbms_output.put_line(sum);
end;
/
四、判断
1、if-then
begin
for i in 1..10 loop
if i = 5
then
dbms_output.put_line(i);
end if;
end loop;
end;
/
2、if-then-else
begin
for i in 1..2 loop
if i= 1
then
dbms_output.put_line('yes');
else
dbms_output.put_line('no');
end if;
end loop;
end;
/
3、if-then-elseif
create table b(id int,name varchar2(20));
insert into b values(1,'tom');
insert into b values(2,'jerry');
insert into b values(3,'dog');
commit;
declare
i int;
begin
select id into i from b where id = 2;
if i=1
then
dbms_output.put_line('mao');
elseif i =2
then
dbms_output.put_line('laoshu');
else
dbms_output.put_line('gou');
end if;
end;
/
4、CASE
DECLARE
v_grade CHAR(1):=UPPER('&p_grade');
BEGIN
CASE v_grade
WHEN 'A' THEN
dbms_output.put_line('Excellent');
WHEN 'B' THEN
dbms_output.put_line('Very Good');
WHEN 'C' THEN
dbms_output.put_line('Good');
WHEN 'D' THEN
dbms_output.put_line('Bad');
ELSE
dbms_output.put_line('No such grade');
END CASE;
END;
五、 实现批量提交
例1、
create table a (id int ,name varchar2(20));
declare
num int :=0;
begin
for i in 1..100 loop
insert into a values(1,'dm');
num := num+1;
if num = 10
then
commit;
num :=0;
end if;
end loop;
end;
/
例2、
begin
for i in 1..100 loop
insert into a values(1,'dm');
if i mod 10 = 0
then
commit;
end if;
end loop;
end;
/