PL/SQL块基本概念及示例
来源:互联网 发布:linux挂载文件夹到mnt 编辑:程序博客网 时间:2024/05/16 12:25
PL/SQL块:procedural language sql带有过程的sql语言。
sql 非过程化的 研究做什么 只要告诉数据库 增删改查就可以了
过程语言(带有分支或循环的语言)
一、模板示例
DECLARE[ 可选:不是必须写的 ]
声明部分,声明常量和变量
BEGIN
开始部分,编写程序
EXCEPTION[ 可选:不是必须写的 ]
异常部分,捕获异常
END;
/ [ /表示编译、执行,必须顶格 ]
二、具体实例
需求1:hello world!
在控制台
--打开输出流
set serverout on;
begin
dbms_output.put_line('hello,pl/sql!');
end;
/
需求2:打印一个数字
DECLARE
--声明一个类型为number的变量i
i number;
BEGIN
--给i赋值,赋值使用 :=
i := 30;
--打印i的值
dbms_output.put_line('i的内容是'||i);
END;
/
需求3:捕获 不能被0除 异常
DECLARE
i NUMBER ;
BEGIN
i:= 1/0;
EXCEPTION
when ZERO_DIVIDE then
dbms_output.put_line('error');
END ;
/
需求4:要求用户输入一个雇员编号,之后根
据输入的内容进行查询,查询雇员的姓名。
• 用户的输入信息使用“&”完成。
DECLARE
eno NUMBER ;
en VARCHAR2(30) ;
BEGIN
-- 输入的信息保存在 eno 里
eno := &no ;
-- 之后根据 eno 的值,对数据库进行查询操作
SELECT ename INTO en FROM emp WHERE empno=eno ;
DBMS_OUTPUT.put_line('编号为: '||eno||'雇员的姓名为:'||en) ;
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.put_line('没有此雇员') ;
END ;
/
在以上的查询中再进一步:可以根据雇员的编号查出姓名及其领导的姓名和所在的部门,
进行显示。
DECLARE
eno emp.empno%TYPE ;
en emp.ename%TYPE ;
mn emp.ename%TYPE ;
dn dept.dname%TYPE ;
dept dept %rowtype ;
BEGIN
-- 输入的信息保存在 eno 里
eno := &no ;
-- 之后根据 eno 的值,对数据库进行查询操作
SELECT e.ename,m.ename,d.dname INTO en,mn,dn FROM emp e,dept d,emp m WHERE
e.empno=7369 AND e.mgr=m.empno AND e.deptno=d.deptno ;
DBMS_OUTPUT.put_line('编号为: '||eno||'雇员的姓名为:'||en) ;
DBMS_OUTPUT.put_line('编号为: '||eno||'雇员的上级姓名为:'||mn) ;
DBMS_OUTPUT.put_line('编号为: '||eno||'雇员所在的部门:'||dn) ;
DBMS_OUTPUT.put_line(dept.deptno) ;
EXCEPTION
WHEN no_data_found THEN
DBMS_OUTPUT.put_line('没有此雇员') ;
END ;
/
说明:
• emp.empno%TYPE ;:表示以emp 表中的 empno字段的类型定义变量
• e.ename,m.ename,d.dname INTO en,mn,dn:一次可以同时放进去多个值
dept dept %rowtype ; 表示dept 是一行数据,类似于 Hibernate 的 PO
- PL/SQL块基本概念及示例
- pl/sql之基本概念和块的结构
- pl/sql之基本概念和块的结构
- PL/SQL存储过程示例及图解
- PL-SQL基本概念
- PL/SQL编程基本概念
- PL/SQL块结构
- PL/SQL程序块
- 典型pl/sql块
- PL/SQL 块简介
- PL/SQL块结构
- Oracle pl/sql块
- PL/SQL块 基础
- pl/sql代码块
- PL/SQL块
- pl/sql 块 实例
- PL/SQL 程序块
- PL/SQL块结构
- HTML5按钮元素新属性formaction,formenctype等简介
- cache释疑
- spark的数据倾斜问题的解决
- 基于ajax再封装
- git rebase 修改最近作者注释
- PL/SQL块基本概念及示例
- 2017 优秀博文
- Rumor谣传路由协议
- dokuwiki如何设置登录
- 基础整理-循环
- zcmu-1962
- react组件生命周期
- Java 反序列化 php 序列化后的对象
- java 生成静态页面——Freemarker实例教程