Oracle-PL/SQL编程

简介: PL/SQL的基本语法

PL/SQL块基本结构

declare

<declarations section> -- 声明部分

begin

<executable command(s)> -- 执行部分

exception

<exception handling> -- 异常处理部分

end;

声明部分:包含变量、常量定义,由 declare 关键字开始,如果不声明变量,可以省略这部分

执行部分:所有可执行 PL/SQL 语句放在这部分,由 begin 关键词开始, end 关键词结束,这部分不可省略,注意 end 后的分号

用 exception 关键词把可执行部分分成两个小部分,之前程序正常执行,一旦出现异常就跳转到异常部分执行

声明

变量声明

变量名 数据类型 [ not null ] [ := 初始值 ] | [ defacult 初始值 ]

常量声明

----常量声明后不可再次赋值

变量名 constant 数据类型 [ not null ] [ := 初始值 ] | [ defacult 初始值 ]

declare

  --声明变量并且初始化

  a number := 100;

  b number default 100;

  --声明属性变量

  c a%type := a; --声明c , c的类型是和a一样的类型

  myemp emp%rowtype;--声明mymep,myemp的类型是属性类型,记录类型,引用数据库表中的一行作为数据类型 , 访问里面属性用“ . ”

  myname emp.ename%type;--声明myid,myid的类型与emp表中的eid相同

begin

  dbms_output.put_line(a);

  dbms_output.put_line(c);

  --把emp表中eid='2018001'的ename赋值给myname

  select ename into myname from emp where eid='2018001';

  dbms_output.put_line(myname);

  --把emp表中eid='2018001'的那一条记录赋值给myemp

  select * into myemp from emp where eid='2018001';

  dbms_output.put_line(myemp.ename);

end;

PL/SQL IF-THEN语句

if 条件 then

----条件成立执行语句

end if;
declare

  score number default 60;

begin

  if score >= 60 then

    dbms_output.put_line('及格了!');

  end if;

end;

PL/SQL IF-THEN-ELSE语句

if 条件 then

----条件成立执行语句

else

----条件不成立执行语句

end if;


declare

  score number default 59;

begin

  if score >= 60 then

    dbms_output.put_line('及格了!');

  else

    dbms_output.put_line('不及格!');

  end if;

end;

PL/SQL IF-THEN-ELSE语句

第一种:

if 条件1 then

----条件1成立执行语句

elsif 条件2 then

----条件2成立执行语句

elsif 条件3 then

----条件3成立执行语句

else

----条件1、2、3都不成立执行语句

end if;
declare

  score number default 75;

begin

  if score>80 then

    dbms_output.put_line('优');

  elsif score between 60 and 80 then

    dbms_output.put_line('良');

  else

    dbms_output.put_line('差');

  end if;

end;
第二种:

if 条件1 then

----条件1成立执行语句

else if 条件2 then

----条件2成立执行语句

else if 条件3 then

----条件3成立执行语句

else

----条件1、2、3都不成立执行语句

end if;

end if;

end if;

注意:有几个if就有几个end if;
declare

  score number default 75;

begin

  if score>80 then

    dbms_output.put_line('优');

  else if score between 60 and 80 then

    dbms_output.put_line('良');

  else

    dbms_output.put_line('差');

  end if;

  end if;

end;

PL/SQL CASE语句

(如果选择器和表达式匹配就执行对应的执行语句,如果选择器与所有表达式都不匹配,就执行else后面执行语句)

case 选择器

when 表达式1 then 执行语句1;

when 表达式2 then 执行语句2;

when 表达式3 then 执行语句3;

when 表达式4 then 执行语句4;    

...

else 执行语句;

end case;

declare

  flag varchar2(50):=upper('&flag');

begin

  case flag

    when 'A' then dbms_output.put_line('优');

    when 'B' then dbms_output.put_line('良');

    when 'C' then dbms_output.put_line('差');

    else dbms_output.put_line('有问题');

  end case;

end;


declare

  flag varchar2(50):=upper('&flag');

  result0 varchar(50);

begin

  result0 :=

  case flag

    when 'A' then '优'

    when 'B' then '良'

    when 'C' then '差'

    else '有问题'

  end;

  dbms_output.put_line(result0);

end;
--用于搜索


declare

  flag varchar2(50):=upper('&flag');

  result0 varchar(50);

begin

  result0 :=

  case

    when flag='A' then '优'

    when flag='B' then '良'

    when flag='C' then '差'

    else '有问题'

  end;

  dbms_output.put_line(result0);

end;

PL/SQL LOOP语句

(无限循环语句,如果不添加 exit where 语句 或者 exit 语句就是无限循环,exit 类似于 break)

loop 

----循环体

----[ exit when 退出循环条件 ]

----[ if ... then 

           exit;

       end if ]

end loop;


declare

  i number:=1;

  sum0 number:=0;

begin

  loop

    sum0:=(sum0+i);

    i:=i+1;

    if i > 10 then

      exit;

    end if;

  end loop;

  dbms_output.put_line(i);

  dbms_output.put_line(sum0);

end;
declare

  i number:=1;

  sum0 number:=0;

begin

  loop

    sum0:=(sum0+i);

    i:=i+1;

    exit when i>10;

  end loop;

  dbms_output.put_line(i);

  dbms_output.put_line(sum0);

end;

PL/SQL WHILE语句

where 条件 loop

----循环体

end loop;
declare

  sum0 number:=0;

  i number:=1;

begin

  while i<=10 loop

    sum0:=(sum0+i);

    i:=i+1;

    exit when i>10;

  end loop;

  dbms_output.put_line(i);

  dbms_output.put_line(sum0);

end;

PL/SQL FOR语句

(reverse表示从循环上限到下限循环)

for 循环变量 in [ reverse ] 循环下限..循环上限 loop

----循环体

end loop;
declare

  sum0 number:=0;

begin

  for i in 1..10 loop

    sum0:=sum0+i;

  end loop;

  dbms_output.put_line(sum0);

end;
相关文章
|
29天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
2月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
|
2月前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
69 3
|
2月前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
63 1
|
4月前
|
SQL 数据库 索引
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
60 0
|
5月前
|
SQL Oracle 关系型数据库
|
5月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
353 3
|
6月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
75 3
|
5月前
|
SQL 存储 Oracle
TDengine 3.3.2.0 发布:新增 UDT 及 Oracle、SQL Server 数据接入
**TDengine 3.3.2.0 发布摘要** - 开源与企业版均强化性能,提升WebSocket、stmt模式写入与查询效率,解决死锁,增强列显示。 - taos-explorer支持geometry和varbinary类型。 - 企业版引入UDT,允许自定义数据转换。 - 新增Oracle和SQL Server数据接入。 - 数据同步优化,支持压缩,提升元数据同步速度,错误信息细化,支持表名修改。 - 扩展跨平台支持,包括麒麟、Euler、Anolis OS等。
131 0
|
6月前
|
SQL Oracle 关系型数据库
一些非常有用的Oracle SQL
一些非常有用的Oracle SQL
44 4

推荐镜像

更多