Oracle---PL/SQL的学习
PL/SQL程序
一.定义
declare
说明部分
begin
语句序列(DML语句)
exception
例外处理语句
end;
二. 变量和常量说明
a) 说明变量(char,varchar2,date,number,boolean,long)
varl char(15);
married boolean :=true;
psal number(7,2);
my_name emp.ename%type;引用型变量,即my_name的类型与emp表中的ename列的类型一样
emp_rec emp%rowtype;记录型变量(一行的类型,是一个数组)
b) 记录变量分量的引用:
emp_rec.ename := ‘adams’;(数组中的某一列)
例子:
declare
--定义记录型变量:代表一行
emp_rec emp%rowtype;
begin
select * into emp_rec from emp where empno=7839;
dbms_output.put_line(emp_rec.ename ||’的薪水是’||emp_rec.sal);
end;
c)定义常量 加个关键字
varl constant char(15);
三. IF语句
1.
IF 条件 THEN 语句1;
语句2
END IF;
2.
IF 条件THEN 语句序列1;
ELSE 语句序列2;
END IF;
3.
IF 条件 THEN 语句;
ELSIF 语句 THEN 语句;
ELSE 语句;
END IF;
if 条件 then 语句
elsif 条件 then 语句
elsif 条件 then 语句
四. 循环语句
1. WHILE循环
while total <=25000
loop
.....
total :=total + salary;
end loop;
2. for in 循环
FOR xxx IN 1..3
LOOP
语句序列;
END LOOP;
例子:
--打印1~10
set serveroutput on ;
declare
pnum number := 1;
begin
loop
--退出条件
exit when pnum > 10;
DBMS_OUTPUT.PUT_LINE(pnum);
-- 加1
pnum := pnum + 1;
end loop;
end;
五.光标
- --查询并打印员工的姓名和薪水
- /*
- 1. 光标的属性:
- %isopen %rowcount (影响的行数)
- %found %notfound
- 2. 默认,一个会话中只能打开300个光标
- SQL> show parameter cursor
- NAME TYPE VALUE
- ------------------------------------ -------------------------------- -----------
- cursor_sharing string FORCE
- cursor_space_for_time boolean FALSE
- open_cursors integer 300
- session_cached_cursors integer 20
- 修改: alter system set open_cursors=400;
- 3. (思考):cursor_sharing 什么作用?---> 性能优化
- EXACT(默认), FORCE, SIMILAR
- */
- 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;
涨工资例子:
- --涨工资,总裁1000 经理800 其他400
- set serveroutput on
- declare
- --alter table "SCOTT"."EMP" rename column "JOB" to empjob
- cursor cemp is select empno,empjob from emp;
- pempno emp.empno%type;
- pjob emp.empjob%type;
- begin
- rollback;
- open cemp;
- loop
- --取一条记录
- fetch cemp into pempno,pjob;
- exit when cemp%notfound;
- --判断职位
- if pjob = 'PRESIDENT' then update emp set sal=sal+1000 where empno=pempno;
- elsif pjob = 'MANAGER' then update emp set sal=sal+800 where empno=pempno;
- else update emp set sal=sal+400 where empno=pempno;
- end if;
- end loop;
- close cemp;
- --why? ---> ACID
- commit;
- dbms_output.put_line('完成');
- end;
Oracle---PL/SQL的学习的更多相关文章
- [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)
原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...
- 浅析Oracle PL/SQL 学习--未完待续
这是一篇关于Oracle Pl/SQL数据库编程的课程学习分享... 首先说明几点: 学习这门课程之前,已经学过并且掌握一些基础的SQL语句.数据库结构分析.ER图设计等知识: 这里也只是较为大概地将 ...
- 学习《Oracle PL/SQL 实例讲解 原书第5版》----创建账户
通过readme.pdf创建student账户. 以下用sys账户登录时都是sysdba. 一.PL/SQL 登录oracle. SYS/123 AS SYSDBA 账户名:sys:密码:123:作 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
- 【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航
原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人 ...
- ORACLE PL/SQL编程之八:把触发器说透
原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...
- [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)
原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!) 继上篇:ORACLE P ...
- [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆)
原文:[推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程详解之三: PL/SQL流程控制语句(不给规则,不成方圆) ...
- [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)
原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...
随机推荐
- C之函数返回一个以上的值
#include<stdio.h> #include<stdlib.h> //函数的返回值不能是数组 void add(int* a,int* b){ *a += 10; *b ...
- TortoiseSVN commit 停止工作
TortoiseSVN commit 便停止工作,详细原因是igc64.dll故障,该动态链接库与Intel HD Graphics Driver有关(即显卡驱动),由于重装系统后,进行了显卡驱动的更 ...
- Java 正则判断一个字符串中是否包含中文
使用正则判断一个字符串中是否包含中文或者中文字符 代码实现如下: import java.util.regex.Matcher; import java.util.regex.Pattern; /** ...
- Redis CrackIT 入侵事件引发Linux 沦陷
▲针对全球6379端口的redis服务器做了扫描,结果如上图 如图开放在公网的redis的6379端口的ip总数有63443个.无密码认证的IP有43024个,在总数占比里达到67%.发现遭受到red ...
- nginx重新编译不停服
找到安装nginx的源码根目录,如果没有就下载新的安装包 .tar.gz 查看ngixn版本极其编译参数 /usr/local/nginx/sbin/nginx -V 进入nginx源码目录 cd n ...
- 【极简版】OpenGL 超级宝典(第五版)环境配置 VS2010
事先声明:该教程仅适用于VS2010环境下超级宝典第五版的配置 第一步:下载示例代码和环境包: 链接:https://pan.baidu.com/s/1llRRQ8ymBgMGuXp5M50pJw 提 ...
- awk工具的基本用法
awk文本过滤的基本用法 1)基本操作方法 格式:awk [选项] '[条件]{指令}' 文件 其中,print 是最常用的编辑指令:若有多条编辑指令,可用分号分隔. Awk过滤数据时支持仅打印某一列 ...
- Zookeeper概述、特点、数据模型
Zookeeper 1.Zookeeper概述 Zookeeper是一个工具,可以实现集群中的分布式协调服务. 所谓的分布式协调服务,就是在集群的节点中进行可靠的消息传递,来协调集群的工作. Zo ...
- Web前端基础(一)--HTML简介
HTML简介 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言. HTML文档的后缀名:.html和.htm,这两种后缀名没有 ...
- Java基础篇---多线程
内容导航: 1.多线程的实现方式 2.线程安全问题 3.线程间通信 4.生产者消费者模式 第一部分多线程的实现方式 在java中多线程实现方式有2种 一.自定义一个类A,继承Thread类 publi ...