--块结构
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

pl sql 和if loop结构相关推荐

  1. Oracle PL/SQL之LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  2. PL/SQL基础:结构、变量处理——PL/SQL教程(一)

    什么是PL/SQL ​ 许多时候我们会利用结构化查询语言(SQL)来访问和操作关系型数据库.这种语言的特点就是非过程化.也就是说使用的时候不用指明执行的具体方法和途径,即不用关注任何的实现细节.但这种 ...

  3. 在Oracle中不通过存储过程一次执行多条SQL语句Oracle PL/SQL

    PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL ...

  4. oracle pl/sql编程详细,Oracle框架:PL/SQL编程:

    PL/SQL编程 一:什么是PL/SQL (1.)PL/SQL体系结构: PL/SQL引擎用来编译和执行,PL/SQL块或子程序,该引擎驻留在Oracle服务器中. (2.)PL/SQL块简介 PL/ ...

  5. oracle快捷语句框架中,Oracle框架:PL/SQL编程:

    PL/SQL编程 一:什么是PL/SQL (1.)PL/SQL体系结构: PL/SQL引擎用来编译和执行,PL/SQL块或子程序,该引擎驻留在Oracle服务器中. (2.)PL/SQL块简介 PL/ ...

  6. PL/SQL用户指南与参考(第一章)

    第一章 PL/SQL一览 一.理解PL/SQL的主要特性 1.块结构 了解PL/SQL最好的方法就是从简单的实例入手.下面的程序是用于处理一个网球拍订单的.首先声明一个NUMBER类型的变量来存放现有 ...

  7. PL/SQL程序基础1

    PL/SQL程序基础1 一.实验目标 1.针对数据库应用领域的数据需求,设计出基于Oracle数据库的解决方案的能力: 2.承担Oracle数据库系统的实施.运行与维护等基本工作的能力. 二.实验项目 ...

  8. 关于PL/SQL我写了一份从0到1的入门教程

    PL/SQL 什么是PL/SQL ​ 许多时候我们会利用结构化查询语言(SQL)来访问和操作关系型数据库.这种语言的特点就是非过程化.也就是说使用的时候不用指明执行的具体方法和途径,即不用关注任何的实 ...

  9. ORACLE甚而,PL/SQL基础

    Oracle PL/SQL语言基础 PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用 ...

最新文章

  1. LVM创建,缩减及快照备份
  2. 转载:写给计算机专业的朋友们
  3. 实例:使用puppeteer headless方式抓取JS网页
  4. JavaScript Bitwise NOT Operator
  5. 双链表java实现_双链表 Java实现数据结构
  6. linux内存初始化初期内存分配器——memblock
  7. 浅谈C# Socket编程及C#如何使用多线程
  8. iframe跨域通信的通用解决方案-第二弹!(终极解决方案)
  9. 【报告分享】2020年国风爆品的进阶之路-详析花西子的社媒营销策略.pdf(附下载链接)...
  10. 利用c51进行数模转换并在液晶屏上显示_7.0寸tft触摸液晶屏可满足不同操作需求...
  11. Windows下的wget安装
  12. ASP.NET Web应用程序和ASP.NET网站的区别
  13. Vue-Treeselect三级动态加载
  14. 阿里巴巴校招内推一面总结
  15. 用上瘾模型来看:艾威学院
  16. oracle xla相关,【EBS】XLA_GLT表的清理
  17. Linux学习笔记-随即更新-慢速学习
  18. 数据结构-栈(栈的C语言实现)
  19. 生僻字用计算机弹的数字,抖音生僻字计算器乐谱完整版 抖音生僻字计算器数字简谱...
  20. 利用Python, PyQt5,Selenium,百度图像识别API制作文献阅读辅助工具

热门文章

  1. 1833 雪糕的最大数量
  2. 个人作业——A001-185-2513-吴光华
  3. 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享
  4. 用云渲染好还是自己搭建传统渲染农场好?
  5. 男子与 AI 对话 6 周后,选择自杀!一时难分“魔鬼”还是“救星”?
  6. 输出小数点后第n位数字
  7. 国内外几个主流的CMS系统推荐
  8. STC89C52 使用 LCD 1602
  9. document.getElementById(“id”)与$(#id)的区别
  10. 晨风机器人发送图片_晨风机器人基本使用说明