oracle数据库之PL/SQL程序结构(上)
来源:互联网 发布:centos 安装网卡驱动 编辑:程序博客网 时间:2024/05/24 04:14
版权声明:本文为博主原创文章,未经博主允许不得转载。
最简单的PL/SQL 程序
declare
begin
dbms_output.put_line(‘HelloWorld’);--注意是单引号
end;
/
这个是在dos窗口里所应该写的,但是在pl/sql工具里不需要 / 结束标志;
首先应该注意的是:
如果要在屏幕上输出信息,需要将serveroutput开关打开
set serveroutput on
那让我们首先了解一下什么是PL/SQL以及程序结构的组成
PL/SQL(Procedure Language/SQL)
PLSQL是Oracle对sql语言的过程化扩展
指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。
SQL优点:交互式非过程化;数据操纵功能强;自动导航语句简单;调试容易使用方便。
PL/SQL程序结构
declare
说明部分 (变量说明,光标申明,例外说明 〕
begin
语句序列 (DML语句〕…
exception
例外处理语句
End;
/
在这里提示一下pl/sql的注释是 -- 或者用/* */
变量和常量的说明:
varl char(15); --说明变量名、数据类型和长度后用分号结束说明语句。
married boolean :=true; --注意这里的赋值有什么区别
psal number(7,2); -- 表示psal最大有7位数,两位为小数
my_name emp.ename%type;--表示myname类型为 emp表中的ename的类型
emp_rec emp%rowtype; --代表记录型变量,这是一整条记录
if语句的三种表达式:详情请看实例http://blog.csdn.net/liuxiaogangqq/article/details/8779447
1. IF 条件 THEN 语句1;
语句2;
end if;
2. IF 条件 THEN 语句序列1;
ESLE 语句序列 2;
END IF;
3. IF 条件 THEN 语句;
ELSIF 语句 THEN 语句;
ELSE 语句;
END IF;
IF语句示例:
accept num prompt '请输入数字';--接收键盘输入的值 会自动保存num的值
declare--声明
pnum number :=#-- &代表取值 pnum 格式 声明变量 变量类型
begin
dbms_output.put_line(pnum);
end;
循环语句:
第一种:
WHILE total <= 25000 LOOP
.. .
total : = total + salary;
END LOOP;
第二种:
Loop
EXIT [when 条件];
……
End loop
第三种:
FOR I IN 1 . . 3 LOOP
语句序列 ;
END LOOP ;
接下来讲一下重点的光标:
说明光标语法:
CURSOR 光标名 [ (参数名 数据类型[,参数名 数据类型]...)]
IS SELECT 语句;
用于存储一个查询返回的多行数据
打开光标: open c1; (打开光标执行查询)
取一行光标的值:fetch c1 into pjob; (取一行到变量中)
关闭光标: close c1;(关闭游标释放资源)
注意: 上面的pjob必须与emp表中的job列类型一致:
定义:pjob emp.job%type;
按员工的工种长工资,总裁1000元,经理长800元其,他人员长400元。
---隐式游标
declare --声明
emp_rec emp%rowtype;--记录
begin
for emp_rec in (select * from emp) --in 变量 变量必须是游标
loop --循环的开始
dbms_output.put_line('员工名称:'||emp_rec.ename);
end loop; --循环的结束
end;
--带参数的游标
declare
cursor cl(pno number) is select * from emp where empno=pno; --查询出所有的emp记录 存储到 cl游标中
begin
for emp_row in cl(7499) --打开游标 (自动) 检索数据(自动) 关闭游标(自动) emp_row 变量也不需要定义
loop
dbms_output.put_line(emp_row.ename);
end loop;
end;
例外
例外是程序设计语言提供的一种功能,用来增强程序的健壮性和容错性。
Oracle的异常处理
系统定义例外
No_data_found (没有找到数据)
Too_many_rows (select …into语句匹配多个行)
Zero_Divide ( 被零除)
Value_error (算术或转换错误)
Timeout_on_resource (在等待资源时发生超时)
用户定义的例外
declare
no_data exception; --设定一个例外名字
emp_row emp%rowtype; --记录性变量
cursor cl(pno number) is select * from emp where empno=pno; --定义游标 pno 查询emp中与员工号相等的数据
begin
open cl(0000); --为游标赋值
fetch cl into emp_row; --在cl中取出数据 给emp_row
if cl%notfound then raise no_data; --在这里抛出例外 判断语句
end if;
close cl;
exception --在这里捕获例外
when no_data then
dbms_output.put_line('没有找到数据');
end;
- 顶
- 1
- 踩
- 0
- 上一篇仿qq聊天程序设计之借鉴
- 下一篇三步教你完成一个spring实例
- oracle数据库之PL/SQL程序结构(上)
- oracle数据库之PL/SQL程序结构(上)
- oracle数据库sql语句07 PL SQL程序结构
- oracle数据库sql语句08 PL SQL程序结构 循环 游标
- oracle数据库sql语句09 PL SQL程序结构 异常
- oracle读书笔记-----PL/SQL编程(一)之基本数据类型、程序结构
- Oracle数据库之PL/SQL
- 学习PL/SQL 之二:PL/SQL程序结构
- 《PL/SQL 语言开发参考手册》之二:PL/SQL 程序结构
- PL/SQL程序结构(组图)
- PL/SQL程序结构概要
- oracle数据库PL/SQL之基础知识
- oracle数据库PL/SQL之游标
- oracle数据库PL/SQL之包
- oracle数据库PL/SQL之触发器
- Oracle数据库之PL/SQL程序设计简介
- Oracle数据库之PL/SQL程序设计基础
- Oracle数据库之PL/SQL异常处理
- Caused by: java.lang.ClassNotFoundException: org.hibernate.engine.transaction.spi.TransactionContext
- 深入浅出Alljoyn与互联网通讯
- 对象XMLHttpRequest readyState 和status状态对照 (收集)
- 问题就是机会
- Vim实战指南(三):高级技巧
- oracle数据库之PL/SQL程序结构(上)
- Realm,为移动设备而生。替代 SQLite 和 Core Data。这是我们的文档。
- mysql 出现 表名_dbatmp_id123 ...
- java Remote Debug(远程调试)
- PopupWindow 使用
- 一个在台积电工作3年的工程师写给学弟学妹们的信[转]
- 庆祝下csdn博客终于有排名了
- 【计算几何】[HNOI2008][HYSBZ/BZOJ1007]水平可见直线
- 申请TexturePacker序列号