Oracle数据库总结:

Oracle数据库之集合运算
Oracle数据库之数据处理
Oracle数据库之建表和管理表
Oracle数据库之对象视图、索引、序列、同义词

一、语法结构:

declare
--说明部分
begin
--sql语句
exception
--例外处理语句
end;
/

二、变量说明

变量类型:char、varhchar2、number、long、date、boolean
普通变量:var1 varchar2(20);
记录型变量:emp1 emp%rowtype;
引用型变量:emp2 emp.empno%type;
--查询并打印5478的姓名和薪水
set serveroutput ondeclare--定义变量保存姓名和薪水--pename varchar(20);--psal       number;pename emp.ename%type;psal        emp.sal%type;
begin--得到姓名和薪水select ename,sal into pename,psal from emp where empno=7839;dbms_output.put_line(pename||'的薪水是'||psal);
end;
/
--查询并打印5478的姓名和薪水
set serveroutput on
declare--定义记录型变量:代表一行emp_rec emp%rowtype;
beginselect * into emp_rec from emp where empno=7839;dbms_output.put_line(emp_rec.ename||'的薪水是'||emp_rec.sal);
end;
/

三、循环体
1)if判断语句
语法结构:

if 条件 then 语句1
语句2
end if;if 条件 then 语句1
语句2
elsif 条件 then 语句3
语句4
end if;if 条件 then 语句1
语句2
elsif 条件 then 语句3
语句4
else
语句5
end if;
--判断用户从键盘上输入的数字
set serveroutput on--接收键盘输入
--num: 地址值,在地址上保存了输入的数字
accept num prompt '请输入一个数字';declare--定义变量,保存输入的数字pnum number := #
beginif pnum = 0 then dbms_output.put_line('您输入的是0');elsif pnum = 1 then dbms_output.put_line('您输入的是1');elsif pnum = 2 then dbms_output.put_line('您输入的是2');else dbms_output.put_line('其他数字');end if;
end;
/

2)循环结构

while 条件
loop
语句
end loop;loop
exit when 条件
语句
end loop;for i in 1..3
loop
语句
end loop;
--打印1~10
set serveroutput on
declarepnum number := 1;
beginloop--退出条件exit when pnum > 10;dbms_output.put_line(pnum);--加一pnum := pnum + 1;end loop;
end;
/

四、光标(cursor)
1)语法规则

cursor cursorname[(参数名 数据类型...)]
is select语句

2)使用步骤

打开光标:open cursorname;抓取数据:fetch cursorname into 变量;关闭光标:close cursorname;
--查询并打印员工的姓名和薪水
/*
1.  光标的属性%isopen      %rowcount (影响的行数)%found       %notfound*/
set serveroutput on
declare-- 定义光标cursor cemp is select ename,sal from emp;pename emp.ename%type;psal       emp.sal%type;
begin--打开光标open cemp;loop--取一条记录fetch cemp into pename,psal;--exit when 没有取到记录;exit when cemp%notfound;dbms_output.put_line(pename||'的薪水是'||psal);end loop;--关闭光标close cemp;
end;
/
set serveroutput ondeclare--说明部分
begin--程序dbms_output.put_line('Hello World');
end;
/

五、异常处理

1)系统异常

no_data_found:没有数据
to_many_rows:太多行
zero_divide:被0除
value_error:算数或者转换错误
timeout_on_resource:等待资源时超时
--被0除
set serveroutput ondeclare pnum number;
beginpnum := 1/0;exceptionwhen zero_divide then dbms_output.put_line('1:0不能做被除数');dbms_output.put_line('2:0不能做被除数');when value_error then dbms_output.put_line('算术或者转换错误');when others then dbms_output.put_line('其他例外');
end;
/

实例一:

--涨工资,总裁10000 经理5000 其他4000
set serveroutput ondeclare--员工的集合--alter table "SCOTT"."EMP" rename column "JOB" to empjobcursor cemp is select empno,empjob from emp;pempno emp.empno%type;pjob   emp.empjob%type;
beginrollback;open cemp;loop--取一个员工fetch cemp into pempno,pjob;exit when cemp%notfound;--判断职位if pjob = 'PRESIDENT' then update emp set sal=sal+10000 where empno=pempno;elsif pjob = 'MANAGER' then update emp set sal=sal+5000 where empno=pempno;else update emp set sal=sal+4000 where empno=pempno;end if;end loop;close cemp;commit;dbms_output.put_line('完成');
end;
/

实例二:

--查询某个部门的员工姓名
set serveroutput on
declarecursor cemp(dno number) is select ename from emp where deptno=dno;pename emp.ename%type;
beginopen cemp(10);loopfetch cemp into pename;exit when cemp%notfound;dbms_output.put_line(pename);end loop;close cemp;
end;
/

实例三:

--查询并打印100号部门的员工姓名
set serveroutput ondeclarecursor cemp is select ename from emp where deptno=100;pename emp.ename%type;--自定义例外no_emp_found exception;
beginopen cemp;--取一条记录fetch cemp into pename;if cemp%notfound then --抛出例外raise no_emp_found;end if;  close cemp;exceptionwhen no_emp_found then dbms_output.put_line('没有找到员工');when others then dbms_output.put_line('其他例外');
end;
/

Oracle数据库之PL/SQL相关推荐

  1. Windows 7 下安装 Oracle 数据库和 PL/SQL Developer

    win7下无论是32bits还是64bits,建议只安装oracle 11g 32bits,然后直接安装pl/sql developer,不需要额外的配置,就可以通过pl/sql developer来 ...

  2. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /** 声明部分--定义常量.变量.复杂数据类型.游标.用户自定义异常*/ BEGIN /** 执行部分 ...

  3. ORACLE数据库之PL/SQL触发器、rownum、动态SQL、数据库之视图与索引

    WHEN子句说明触发约束条件.Condition为一个逻辑表达时,其中必须包含相关名称,而不能包含查询语句,也不能调用PL/SQL函数.WHEN子句指定的触发约束条件只能用在BEFORE和AFTER行 ...

  4. oracle数据库12154,PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符已解决(本地未安装Oracle需要连接服务器上的)...

    ORA-12154:TNS:无法解析指定的连接标识符 ORA-12154:TNS:无监听程序 错误分析一.PL/SQL 客户端登录到数据库,如果配置错误会有以上错误,如下图. 这个错误主要是pl/sq ...

  5. oracle数据库笔记---pl/sql的基础使用方法

    2.pl/sql的使用:创建表: a.输入账户,密码进入后, b.在左侧下拉框选择All objects,中的tables有很多,是系统自带的表; 在左侧下拉框选择My objects,中的table ...

  6. oracle 作业调度里pl/sql怎么写,PL/SQL实现Oracle数据库任务调度

    PL/SQL实现Oracle数据库任务调度 PL/SQL实现Oracle数据库任务调度 正在看的ORACLE教程是:PL/SQL实现Oracle数据库任务调度.摘要:本文主要就数据库恢复与系统任务的调 ...

  7. 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

    本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...

  8. 获取oracle数据库war报告,Oracle 数据库开发及SQL基础实战

    Oracle 数据库开发及SQL基础实战 一.数据库基础 主键(Primary Key): 1.某一列或某些列的组合,构成一个主键,在这张二维表里,主键必须不重复.用于在这些行之间进行唯一的区别. 2 ...

  9. Oracle Study之--PL/SQL Developer软件错误

    Oracle Study之--PL/SQL Developer软件错误 博文在51cto和CSDN同时开通 系统环境: 操作系统: Windows  XP(64) 软件:          PL/SQ ...

最新文章

  1. Aliyun LOG Java Producer 快速入门
  2. 由于不知线程池的bug,某Java程序员叕被祭天
  3. 通过nginx访问.html出现Access Denied提示怎么解决(亲测)
  4. Parse Too complex in xxxx.cpp --------source insight
  5. 安卓逆向_16 --- ARM 静态分析( 使用 IDA Pro 分析 ARM 汇编【java_ 和 JNI_OnLoad】 )
  6. linux 运行长后内存就满了,关于Linux 内存的使用,你确定真的理解吗?
  7. 2440 OV9650 C通道保存图片完全成功!顶!
  8. C# 小票打印机 直接打印 无需驱动
  9. 错误:java 找不到符号
  10. Linux下unzip解压文件时报错:End-of-central-directory signature not found.
  11. 我不怕未知的困难,我只怕身边没有你
  12. 【音视频工具】前端屏幕录制工具 + 录制<video>标签内容
  13. 身份证合法性校验规则
  14. 12、Tello 进行起飞命令执行和视频显示
  15. axis2 webService开发 附深入理解 Java 垃圾回收机制
  16. vb.net在自己的应用中嵌入谷歌地球的方法
  17. 大话设计模式——工厂模式
  18. 转:系统管理员最佳实践准则
  19. 高等几何——射影变换4
  20. 【2021春招】3.13美团笔试题

热门文章

  1. Updater Application Block for .NET
  2. ST17H26移植软时钟代码
  3. 计算机网络第六章ppt课件,计算机网络与通信(第6章).ppt
  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)bernoulli_distribution 类
  5. 区块链系统之《基于区块链的PKI数字证书系统》
  6. 区块链BaaS云服务(14)华大BGI区块链“碎片分布式存储“
  7. Bitcoin0.21版 公链开发(3) 网关PHP windows上安装
  8. CMM与CMMI的关系
  9. 主机信息收集技术 -Nmap
  10. LineageOS编译