produceTestDate
set serveroutput on
--使用基本变量类型
declare
--定义基本变量;类型
--基本数据类型
pnumber number(7, 2);
pname varchar2(20);
pdate date;
begin
pnumber := 1;
dbms_output.put_line(pnumber);
dbms_output.put_line('hello');
pname :='tom';
dbms_output.put_line(pname);
pdate := sysdate;
dbms_output.put_line(pdate);
--明天的日期
dbms_output.put_line(pdate + 1);
end;
/ --引用型变量
set serveroutput on declare
--定义引用型变量,查询并打印7839的姓名和薪水
--pname varchar2(20);
--psal number(7,2);
pname EMP_bch.Ename%type;
psal EMP_bch.Sal%type;
begin
--得到7839的姓名和薪水
select ename,sal into pname,psal from EMP_bch where empno=7839;
--打印姓名和薪水
dbms_output.put_line(pname||'的薪水是'||psal); end;
/ --记录型变量,查询并打印7839的姓名和薪水
set serveroutput on declare
--定义记录型变量:注意代表一行
EMP_bch_rec EMP_bch%rowtype;
begin
--得到7839的一行信息
select * into EMP_bch_rec from EMP_bch where empno=7839;
--打印姓名和薪水
dbms_output.put_line(EMP_bch_rec.ename||'的薪水是'||EMP_bch_rec.sal);
end;
/ --IF语句练习
/*
*判断用户从键盘输入的数字
1.如何使用IF语句
2.如何接受几个键盘输入(字符串)
*/
set serveroutput on --接受键盘输入
--num是一个地址值:在该地址上保存了输入的值
accept num prompt'请输入一个数字'; declare --定义变量保存用户从键盘输入的数字
pnum number:=#
begin
--执行IF语句进行条件判断
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循环 循环打印1——10
--打开输出
set serveroutput on declare
--定义循环变量
pnum number:=1;
begin
while pnum<=10 loop
--循环体
dbms_output.put_line(pnum);
--使变量自增
pnum := pnum + 1;
end loop;
end;
/ --推荐使用!!!
--使用loop循环打印1——10
set serveroutput on declare
--定义循环变量,并赋初始值为1
pnum number:=1; begin
loop
--退出条件,循环变量大于10
exit when pnum >10; --打印该变量的值
dbms_output.put_line(pnum); --变量自增一
pnum := pnum +1; end loop;
end;
/ --使用循环FOR循环打印1——10
set serveroutput on
declare
--定义循环变量并赋初值为1
pnum number:=1; begin
for pnum in 1..10 loop
dbms_output.put_line(pnum);
end loop;
end;
/ --游标的练习
set serveroutput on
declare
--定义一个游标
--游标属性 %found 取到值为true,取不到为false,%notfound相反
cursor cemp is select ename,sal from EMP_bch;
pname EMP_bch.ename%type;
psal EMP_bch.sal%type;
begin
--打开游标
open cemp;
loop
--取一条记录
fetch cemp into pname,psal;
--1.循环什么时候退出?
--fetch 不一定能取到记录
exit when cemp%notfound;
--打印结果
dbms_output.put_line(pname||'的薪水是'||psal);
end loop;
--关闭游标
close cemp;
end;
/ --给员工涨工资 总裁:1000,经理:800,其他:400
set serveroutput on
declare
--定义游标给哪些员工涨工资
cursor cemp is select empno,job from EMP_bch;
pempno EMP_bch.Empno%type;
pjob EMP_bch.Job%type;
begin
rollback;
--打开游标
open cemp;
if cemp%isopen then
dbms_output.put_line('游标已经打开');
else
dbms_output.put_line('游标没有打开');
loop
fetch cemp into pempno,pjob;
exit when cemp%notfound;
--判断员工的职位
if pjob ='PRESIDENT' then update EMP_bch set sal = sal+1000 where empno=pempno;
elsif pjob ='MANAGER' then update EMP_bch set sal = sal+800 where empno=pempno;
else update EMP_bch set sal = sal+400 where empno=pempno;
end if;
end loop;
--关闭游标
close cemp;
--对于oracle,默认的事物隔离级别是read committed
commit;
dbms_output.put_line('涨工资完成');
end;
/ /*
游标的属性
%found %motfound
%isopen:判断游标是否打开
%rowcount:影响的行数
有标的限制:默认情况下只允许在同一个会话中打开300个游标 */
set serveroutput on declare --定义游标 cursor cemp is select empno,job from Emp_Bch;
pempno Emp_Bch.Empno%type;
pjob Emp_Bch.Job%type;
begin
loop
open cemp;
--取出一条记录
fetch cemp into pempno,pjob;
cemp%notfound;
exit when cemp%notfound;
--if pjob='PRESIDENT' then
dbms_output.put_line('rowcount'||cemp%rowcount); --end if;
close cemp;
end loop;
end;
/ --带参数的游标
set serveroutput on declare
--带参数的游标
cursor cemp(dno number) is select ename from EMP_BCH where deptno = dno;
pename EMP_BCH.ENAME%TYPE;
begin
--打开游标
open cemp(10);
loop
fetch cemp into pename;
exit when cemp%notfound;
dbms_output.put_line(pename); end loop;
close cemp;
end;
/ --系统异常:no_data_found
set serveroutput on
declare
pename EMP_BCH.ENAME%TYPE; begin
SELECT ENAME into pename FROM EMP_BCH WHERE EMPNO=1234;
exception
when no_data_found then dbms_output.put_line('没有找到员工');
when others then dbms_output.put_line('其他异常');
end;
/ --系统异常 too_many_rows
set serveroutput on declare
pename EMP_bch.ename%type; begin
--查询所有员工的姓名
select ename INTO pename from EMP_BCH WHERE DEPTNO=10;
exception
when too_many_rows then dbms_output.put_line('select into 匹配了多行');
when others then dbms_output.put_line('其他异常');
end;
/ --系统异常 zero_devide
set serveroutput on
declare
--定义一个基本变量
pnum number;
begin
pnum:=1/0;
exception
when zero_divide then dbms_output.put_line('1;0不能做被除数');
dbms_output.put_line('1;0不能做被除数');
when others then dbms_output.put_line('其他例外');
end;
/ --系统异常 value_error
set serveroutput on
declare
--定义一个number类型的变量
pnum number;
begin
pnum:='abc';
exception
when value_error then dbms_output.put_line('算数或转换错误');
when others then dbms_output.put_line('其他错误');
end;
/ --自定义异常:查询50号部门的员工
set serveroutput on
declare
cursor cemp is select ename from EMP_BCH where DEPTNO=50;
pename EMP_BCH.ENAME%TYPE;
--自定义异常
no_emp_found exception;
begin
OPEN CEMP;
--取到一个用户
FETCH cemp into pename;
if cemp%notfound then
raise no_emp_found;
end if; CLOSE CEMP;
exception when no_emp_found then dbms_output.put_line('没有找到员工');
when others then dbms_output.put_line('其他例外');
end;
/
/*
loop
exit when cemp%notfound;
end loop;
*/ --瀑布模型
/*
sql语句
SELECT TO_CHAR(HITEDATE,'yyyy') from EMP_bch;
-->游标-->循环-->退出条件:notfound
变量:1.初始值 2.如何得到
每年入职的员工数
count80 number:=0;
count81 number:=0;
count82 number:=0;
count87 number:=0;
*/
set serveroutput on
declare
--定义游标
cursor cemp
is
select to_char(hiredate,'yyyy') from EMP_bch;
phiredate varchar2(4);
--入职人数
count80 number:=0;
count81 number:=0;
count82 number:=0;
count87 number:=0;
begin
open cemp;
loop
fetch cemp into phiredate;
exit when cemp%notfound;
--判断入职年份
if phiredate='' then count80:=count80+1;
elsif phiredate='' then count81:=count81+1;
elsif phiredate='' then count82:=count82+1;
else count87:=count87+1;
end if;
end loop;
close cemp;
--输出结果
dbms_output.put_line('Total:'||(count80+count81+count82+count87));
dbms_output.put_line('1980:'||count80);
dbms_output.put_line('1981:'||count81);
dbms_output.put_line('1982:'||count82);
dbms_output.put_line('1987:'||count87);
end;
/
produceTestDate的更多相关文章
随机推荐
- zookeeper:1
分布式环境的特点 分布性:多台机器位置不同,但是相互协同做某一件事情. 并发性:程序运行过程中,并发性操作是很长见的.比如:同一个分布式系统中的多个节点,同时访问一个共享资源.(数据库,分布式存储) ...
- Computer Vision_33_SIFT:SIFTflow Dense Correspondence across Scenes and its Applications——2011
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- 【Day5】2.反爬策略之代理IP
import urllib.request as ur proxy_address = ur.urlopen('http://api.ip.data5u.com/dynamic/get.html?or ...
- Visual Studio 2017使用
常用快捷方式 Ctrl + KK插入书签 取消书签Ctrl + KP 上一个书签Ctrl + KN 下一个数千Ctrl + F3 先一个关键词Shift + F3 上一个关键词 Ctrl + KC 添 ...
- nagios安装部署及详细配置说明(转)
一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...
- rabbitmq 公平分发和消息接收确认(转载)
原文地址:http://www.jianshu.com/p/f63820fe2638 当生产者投递消息到broker,rabbitmq把消息分发到消费者. 如果设置了autoAck=true 消费者会 ...
- Lua 学习之基础篇二<Lua 数据类型以及函数库 汇总>
引言 前面讲了运算符,这里主要对Lua的数据处理相关的数据类型和函数库进行总结归纳,后面会再接着单独分开讲解具体使用. 首先因为Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值. 值可以存储 ...
- 使用Django 测试客户端一起测试视图,模板和URL
Django 测试客户端 self.client.get(url) 测试客户端是Django中TestCase类的一个属性名. 至此已经在网站中可以创建一个清单了. 那么,现在是可以在unit te ...
- 003_linuxC++之_namespace使用
(一)引入namespace原因: 假如有很多跟人共同完成一项工程,工程中难免会有函数定义一样的名称,不可能一个一个的询问这个函数 你定义过了没有,所以引入namespace #include < ...
- 爬虫----异步---高性能爬虫----aiohttp 和asycio 的使用
前情提要: 首先膜拜loco大佬 肯定有人像我一样.不会异步,发一下. 一:性能比对 多进程,多线程,(这里不建议使用,太消耗性能) 进程池和线程池 (可以适当的使用) 单线程+异步协程 (推荐使 ...