简单的pl/sql程序

declare
begin
dbms_output.put_line('hello world');
end;
什么是PL/SQL?
pl/sql(Procedure language/SQL)
plsql是oracle对sql语言的过程化扩展
指在sql命令语方中增加了过程处理语句(如分支、循环等),使sql语言具有过程处理能力。
 
PL/SQL程序结构
declare
说明部分(变量说明,光标申明,例外说明)
begin
语句序列(DML语句)...
exception
例外处理语句
end;
/
变量和常量说明
说明变量(char, varchar2, date, number, boolean, long)
例如:
a char(15);
b boolean:=true;
c number(8,2);
--myName的类型与emp表中的ename列类型一样
myName emp.ename%type;
--记录型变量
myRec emp%rowtype;
IF语句
IF 条件 THEN 语句1;
语句2;
END IF; IF 条件 THEN 语句序列1;
ELSE 语句序列2;
END IF; IF 条件 THEN 语句;
ELSIF 语句 THEN 语句;
ELSE 语句;
END IF;
--接收键盘输入
--num: 地址值,在该地址上 保存了输入的值
accept num prompt '请输入一个数字'; declare
--定义变量保存输入的数字
pnum number := #
begin
if 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;
/

循环语句

WHILE total<100
LOOP
...
total:=total+1;
END LOOP; LOOP
EXIT [when 条件];
...
END LOOP; FOR I IN 1..3
LOOP
语句序列;
END LOOP;
--输出从1-10
declare
num number(10) := 1;
begin
while num <= 10 loop
dbms_output.put_line(num);
num := num + 1;
end loop;
end; --输出从1-10
declare
num number(10) := 1;
begin
loop
exit when num > 10;
dbms_output.put_line(num);
num := num + 1;
end loop;
end;
--输出从1-10
declare
num number(10) := 1;
begin
for num in 1 .. 10 loop
dbms_output.put_line(num);
end loop;
end;
光标(Cursor)==ResultSet
说明光标语法:
CURSOR 光标名 [(参数名 数据类型[,参数名 数据类型]...)]
IS SELECT 语句;
用于存储一个查询返回的多行数据
cursor cr is select ename from emp;
打开光标: open cr;
取一行光标值: fetch cr into pename;
关闭光标:close cr;
(*注意:pename必须与emp表中的ename类型一致。)
declare
--定义光标
cursor cr is select ename, sal from emp;
pname emp.ename%type;
psal emp.sal%type;
begin
--打开光标
open cr;
loop
--退出条件,没有找到记录
exit when cr%notfound;
--取记录
fetch cr into pname, psal;
--打印数据
dbms_output.put_line(pname || '工资是' || psal);
end loop;
--关闭光标
close cr;
end;

带参数的光标

cursor cr(no varchar2)
is select ename,sal from emp where deptno=no;
declare
cursor cr(no number) is select ename,sal from emp where deptno=no;
pname emp.ename%type;
psal emp.sal%type;
begin
--打开光标
open cr(10);
loop
--退出条件,没有找到记录
exit when cr%notfound;
--取记录
fetch cr into pname, psal;
--打印数据
dbms_output.put_line(pname || '工资是' || psal || '涨工资' || (psal+1000));
end loop;
--关闭光标
close cr;
end;

例外

例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。
1、系统定义例外
No_data_found 没有找到数据
Too_many_rows select ... into 语句匹配多个行
Zero_Divide 被零除
Value_error 算术或转换错误
Timeout_on_resource 等待资源发生超时
2、用户定义例外
在declare中定义例外
myExce exception;
在可执行语句中引起例外
raise myExce;
在Exception节处理例外
when myExce then ...
declare
cursor cr is select ename, comm from emp;
pname emp.ename%type;
pcomm emp.comm%type;
myexce exception;
begin
--打开光标
open cr;
loop
--退出条件,没有找到记录
exit when cr%notfound;
--取记录
fetch cr into pname, pcomm;
--引发例外
if pcomm is null then raise myexce;
end if;
dbms_output.put_line(pname || '的comm不是空');
end loop;
--关闭光标
close cr;
exception
--处理例外
when myexce then
dbms_output.put_line(pname || '的comm是空的');
end;

oracle pl/sql程序的更多相关文章

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

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

  2. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

    原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...

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

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

  4. Oracle PL/SQL随堂笔记总结

    1.pl/sql编程 2.存储过程 3.函数 4.触发器 5.包 6.pl/sql基础 -定义并使用变量 7.pl/sql的进阶 8.oracle的视图 1.pl/sql编程 1.理解oracle的p ...

  5. Oracle PL/SQL

    PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...

  6. oracle pl/sql split函数

    在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作. 以java开发为例: 前台传入字符串拼接形式的一个JSON数据,如:"1001,1002,1003",这可能代表了一组序号 ...

  7. [Oracle] PL/SQL学习笔记

    -- 1. 使用一个变量 declare -- Local variables here v_name ); begin -- Test statements here select t.user_n ...

  8. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  9. oracle PL/SQL基础编程

    PL/SQL(Procedural Language/SQL)是oracle中引入的一种过程化编程语言 PLS-00103:出现符号"declare"在需要下列之一时 符号&quo ...

随机推荐

  1. PS前端

    学习使用Photoshop的基本使用,以及Photoshop中关于切图这一块的知识,目的是能熟练使用Photoshop查看UI设计师的设计效果图,同时利用Photoshop切图来制作专业html页面. ...

  2. uva-10562-二叉树

    题意: Homer教授被报道失踪了,我们怀疑这和他最近的研究有关,但是我们确实不知道他最近在研究什么. 侦探们试图侵入他的电脑,再几次失败后才意思到教授的智力超出他们很多............... ...

  3. MPI 环境配置,MPICH,VisualStudio

    ▶ Visual Studio 下配置MPI环境 ● 参考资料:http://blog.csdn.net/z909768094/article/details/50926162 ● 如果使用 MPIC ...

  4. PHP过滤各种HTML标签的表达式,值得收藏

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  5. bootstrap修改勾选样式

    小对勾需要引入awesome插件. css部分: .bella-checkbox{ position: relative;}/** 将初始的checkbox的样式改变 */.bella-checkbo ...

  6. JAVA Spring 面向切面编程 基本案例(AOP)

    < 1 > 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...

  7. JavaScript判断浏览器及其版本信息

    通过window.navigator来判断: function getBrowserInfo(){ var Info = {}; var str = window.navigator.userAgen ...

  8. 使用SendMessage进行进程间通信

    Imports System.Runtime.InteropServices Public Class Monitor <DllImport("user32.dll", Ch ...

  9. python 冷知识点

    # int could accept parameters in bool type.int(True) # result is 1 int(False) # result is 0 reprlib. ...

  10. python传参数

    Python参数传递采用的肯定是“传对象引用”的方式.这种方式相当于传值和传引用的一种综合.如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对 ...