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 ...
 
随机推荐
- 关于一个GPGPU优化中Bank Conflict的讨论
			
出自OpenGPU: 关于去除bank conflict的一个例子程序
 - maven创建父项目和子项目
			
创建父级项目 new ----- others ------ maven project 创建好后删除,pom.xml以外的文件 点击pom.xml文件,修改Packaging属性为 ...
 - mysql主从数据一致性校验和修复
			
1. 安装 yum install -y perl-IO-Socket-SSL.noarch perl-Digest-MD5 yum -y install http://www.percona.com ...
 - LeetCode_9. Palindrome Number
			
9. Palindrome Number Easy Determine whether an integer is a palindrome. An integer is a palindrome w ...
 - 在linux下php挂接mysql.so扩展的方法
			
第一步:进入php源码中的"ext/mysql"目录下命令:cd 第二步:在当前目录下运行phpize 命令:/usr/local/php524/bin/phpize phpize ...
 - vue-cli3项目运行时一直发http://localhost:8080/sockjs-node/info?t=1462183700002请求
			
报错如下图: 解决方式: 一.如果是在开发环境,应该是开发的时候网络环境变更导致,比如你切换无线网络,导致开发服务器的IP地址换了,这样开发服务器会不知道如何确定访问源.开发环境中关闭npm dev ...
 - Thingsboard源码编译,小白新坑随笔
			
在Thingsboard源码编译过程中,遇见的问题总结: 1.Thingsboard Server UI 模块编译,无法执行“npm install ”:出现错误信息:Failed to execut ...
 - 【FFMPEG】VS2013编译ffmpeg
			
原文:http://blog.csdn.net/uselym/article/details/49885867 由于VS2013支持c99了,所以,可以直接用vs2013进行ffmpeg的编译调试,而 ...
 - 洛谷 题解 P4955 【[USACO14JAN]Cross Country Skiing 越野滑雪】
			
二分+DFS 看到这么多大佬写了并查集,BFS的,还没有人写DFS版的,那么肯定是要来水水积分的啦毕竟这可是道伪紫题呢! 做法楼上楼下也讲得很清楚了吧,详见代码的注释 #include<bits ...
 - Meta Post
			
$\require{color} \require{enclose}$ 写博客的一些技巧和工具. To use the following three macros it is necessary t ...