pl sql 和if loop结构
--块结构
declare
v_num number :=10 ; --声明一个变量 := 赋值
v_name varchar2(10) :='偶发清';
v_second number :=#
begin
dbms_output.put_line('数字是'||v_num); --打印v_num变量 ||连接字符串
dbms_output.put_line(v_name);
dbms_output.put_line(v_second);
end;
--变量作用范围
--变量声明在哪里declare里面就对应在里面可以用
declare
v_num number :=10;
begin
declare
v_first number := 20;
begin
dbms_output.put_line(v_num);
dbms_output.put_line(v_first);
end;
dbms_output.put_line(v_num||'aaaa');
end;
declare
v_num number := 10;
begin
dbms_output.put_line(v_num);
declare
v_num number :=20;
begin
dbms_output.put_line(v_num);
end;
dbms_output.put_line(v_num);
end;
--变量数据类型
--标量数据类型varchar2 number date timestamp char
--属性类型 %type %rowtype
--%type
declare
v_sal emp.sal%type; --自动匹配表中某个字段的数据类型
begin
select sal into v_sal from emp where empno=7788;
dbms_output.put_line(v_sal);
end;
--%rowtype 自动匹配一行数据
declare
v_emp emp%rowtype;
begin
select * into v_emp from emp where empno=7788;
dbms_output.put_line(v_emp.sal||' '||v_emp.ename); --变量名 .字段 来访问
end;
--控制结构
--if 结构
declare
v_sal number :=8000;
begin
if v_sal>5000 then
dbms_output.put_line('工资还可以');
end if;
end;
--if else
declare
v_sal number:=2000;
begin
if v_sal>3500 then
dbms_output.put_line('工资大于3500');
else
dbms_output.put_line('工资还有待提升!');
end if;
end;
--嵌套if
declare
v_score number := 70;
v_sex varchar2(10):='男';
begin
if v_score<60 then
dbms_output.put_line('不及格');
if v_sex = '女'then
dbms_output.put_line('罚抄10遍');
else
dbms_output.put_line('跑操场');
end if;
else
dbms_output.put_line('及格');
if v_sex ='女' then
dbms_output.put_line('奖励iphone7');
else
dbms_output.put_line('喝酒去');
end if;
end if;
end;
--多重if
declare
v_score number := 90;
begin
if v_score>=90 then
dbms_output.put_line('优秀');
elsif v_score>=80 then
dbms_output.put_line('良好');
elsif v_score >=60 then
dbms_output.put_line('及格');
else
dbms_output.put_line('不及格');
end if;
end;
--case
declare
v_con constant varchar2(10) := '陈青山';--常量 值固定不变
v_grade varchar2(10) := '&请输入等级';
begin
case v_grade
when 'A' then
dbms_output.put_line('A等级');
when 'B' then
dbms_output.put_line('B等级');
else
dbms_output.put_line('没有这个等级');
end case;
end;
--打印1-100整数
--loop 基本循环
declare
v_i number :=1;
begin
loop
dbms_output.put_line(v_i);
v_i := v_i +1;
exit when v_i>100;
end loop;
end;
--while 循环
declare
v_i number :=1;
begin
while v_i<=100 loop
dbms_output.put_line(v_i);
v_i:=v_i+1;
end loop;
end;
--for 循环 偶数和
declare
v_i number;
v_sum number := 0;
begin
for v_i in reverse 1..100 loop
if mod(v_i,2) =0 then
dbms_output.put_line(v_i);
v_sum := v_sum+v_i;
end if;
end loop;
dbms_output.put_line(v_sum);
end;
--奇数和
declare
v_i number;
v_sum number := 0;
begin
for v_i in reverse 1..100 loop
if mod(v_i,2) !=0 then
dbms_output.put_line(v_i);
v_sum := v_sum+v_i;
end if;
end loop;
dbms_output.put_line(v_sum);
end;
--双重for循环
declare
begin
for i in 1..9 loop
for j in 1..i loop
dbms_output.put(j||'*'||i||'='||(i*j)||' ');
end loop;
dbms_output.put_line('');
end loop;
end;
--等腰三角形
declare
begin
for i in 1..5 loop
--打印空格
for j in 1..5-i loop
dbms_output.put(' ');
end loop;
--打印*
for k in 1..2*i-1 loop
dbms_output.put('*');
end loop;
dbms_output.put_line('');
end loop;
for i in 1..4 loop
--打印空格
for j in 1..i loop
dbms_output.put(' ');
end loop;
--打印*
for k in 1..2*(5-i)-1 loop
dbms_output.put('*');
end loop;
dbms_output.put_line('');
end loop;
end;
create table tb_for(
id number primary key,
v_num number
)
create sequence seq_for ;
--循环添加
declare
begin
for i in 1..100 loop
insert into tb_for values(seq_for.nextval,i);
end loop;
commit;
end;
--顺序控制
declare
v_emp emp%rowtype;
begin
select * into v_emp from emp where empno=&eno;
dbms_output.put_line(v_emp.ename||' '||v_emp.sal);
/* if v_emp.sal >2000 then
goto print;
dbms_output.put_line('aaaaa');
else
goto noprint;
end if;
<<print>>
dbms_output.put_line('要交税');
<<noprint>>
null;*/
exception
when no_data_found then
-- dbms_output.put_line('员工不准确 ,请输入正确员工编号');
dbms_output.put_line(sqlerrm);
end;
--自定义异常
declare
myerror exception ;--声明一个自定义异常
pragma exception_init(myerror,-20003);--关联错误编码
begin
raise exception
end;
select * from tb_for;
转载于:https://www.cnblogs.com/yin-dt/p/6736520.html
- 点赞
- 收藏
- 分享
- 文章举报
- JAVA 选择结构if的注意事项
- Oracle控制语句(if , loop , while , for)
- linux shell编程控制结构:expr、let、for、while、until、shift、if、case、break、continue、函数、select 学习笔记
- 逻辑运算符以及if结构和if else结构
- shell脚本结构、date命令、变量 shell脚本中的逻辑判断 文件目录属性判断 if特殊用法 case判断
- [TwistedFate]bool类型,关系运算符,逻辑运算符,程序的三种结构,条件表达式,枚举类型,if,switch语句
- asp模板解析类模块(支持if,function,loop及解析缓存)
- 分支结构之if篇
- 选择结构if-else语句
- 9.如何使用if选择结构
- JAVA if,switch多分支选择结构
- JS中对象和变量是否可以作为if选择结构的条件?
- 代码中输入数字自动筛选出最大值,使用array,for loop and if (21.9.2017)
- 策略模式+工厂模式优化if...else if...else if结构
- 4、使用嵌套if选择结构
- [零基础学软件开发9]选择结构if语句介绍之2
- Java (if else)(switch case)结构
- 选择结构--if和switch语句
- ******************** 选择结构-if ********************
- Java语法基础(三)----选择结构的if语句、switch语句