--第一个plsql程序
declare
out_str varchar2(20);
begin
out_str:='第一个plsql程序示例';
dbms_output.put_line(out_str);
exception
when others then
dbms_output.put_line('发生了异常,请检查代码');
end;
--开启输出的开关
set serveroutput on;
--伪列行标识 rowid
--伪列行号 rownum
--定义变量,并且给变量赋值
declare
theId int:=105;
theName varchar2(20);
begin
--theId:=&tt;
--theName:='&qq';
select userId,userName into theId,theName from myusers where userId=102;
dbms_output.put_line('编号:'||theId||',名称:'||theName);
end;
--条件控制
declare
num1 int;
num2 int;
begin
num1:=&tt;
num2:=&qq;
ifnum1>num2 then
dbms_output.put_line(num1||'大于'||num2);
dbms_output.put_line('num1大于num2');
endif;
end;
--if else结构
declare
num1 int;
num2 int;
begin
num1:=&tt;
num2:=&qq;
ifnum1>=num2 then
dbms_output.put_line(num1||'大于等于'||num2);
else
dbms_output.put_line('num1小于num2');
endif;
end;
-- if elsif else 结构
declare
num1 int;
num2 int;
begin
num1:=&tt;
num2:=&qq;
ifnum1>num2 then
dbms_output.put_line(num1||'大于'||num2);
elsif num1<num2 then
dbms_output.put_line(num1||'小于'||num2);
else
dbms_output.put_line(num1||'等于'||num2);
endif;
end;
--case结构对应于java里面的switch
--要求弹一个输入框,输入一个成绩,显示成绩的等级
declare
result int;
begin
result:=&tt;
result:=trunc(result/10); --取整
case result
when 9 then dbms_output.put_line('成绩优秀,奖励华为手机');
when 8 then dbms_output.put_line('成绩良好,奖励小米手机');
when 7 then dbms_output.put_line('成绩一般,奖励100块');
when 6 then dbms_output.put_line('刚好及格,适当鼓励');
else dbms_output.put_line('奖励一巴掌');
endcase;
end;
--循环,四要素:初始化循环条件,循环判断,循环操作,改变循环条件
--1.通过if退出 ,从1加到100
declare
iint:=1;
result int:=0;
begin
loop
result:=result+i;
if i=100 then
exit;
end if;
i:=i+1;
endloop;
dbms_output.put_line('累加的结果是:'||result);
end;
--exit when
declare
iint:=1;
result int:=0;
begin
loop
result:=result+i;
exit when i=100;
i:=i+1;
endloop;
dbms_output.put_line('累加的结果是:'||result);
end;
-- while循环
declare
iint:=1;
result int:=0;
begin
while i<=100 loop
result:=result+i;
i:=i+1;
endloop;
dbms_output.put_line('累加的结果是:'||result);
end;
--for 类似于foreach
declare
iint:=1;
result int:=0;
begin
fori in 1..100 loop
result:=result+i;
endloop;
dbms_output.put_line('累加的结果是:'||result);
end;
--顺序控制 goto语句
begin
dbms_output.put_line('程序开始...');
goto second_tag;
dbms_output.put_line('程序运行...');
<<second_tag>>
dbms_output.put_line('程序继续运行...');
NULL;
end;
--异常处理
declare
theName varchar2(20);
begin
--insert into myusers values(102,'小花','123');
--commit;
--select userName into theName from myusers where userId=104;
exception
when dup_val_on_index then
dbms_output.put_line('违反了唯一约束');
rollback;
when no_data_found then
dbms_output.put_line('没有找到相关值');
when too_many_rows then
dbms_output.put_line('给单个变量赋了多个值');
when others then
dbms_output.put_line('发生了其他异常');
end;