l PLSQL

n 在客户端输出helloworld

set serveroutput on;//默认是off,设成on是让Oracle可以在客户端输出数据

begin

dbms_output.put_line('helloworld');

end;

/

n 变量的赋值与输出

declare

v_name varchar2(20);//声明变量v_name变量的声明以v_开头

begin

v_name := 'myname';

dbms_output.put_line(v_name);

end;

/

n pl/sql对于异常的处理(除数为0)

declare

v_num number := 0;

begin

v_num := 2/v_num;

dbms_output.put_line(v_num);

exception

when others then

dbms_output.put_line('error');

end;

/

n 基本变量类型

binary_integer:整数,主要用来计数而不是用来表示字段类型。比number效率高

number:数字类型

char:定长字符串

varchar2:变长字符串

date:日期

long:字符串,最长2GB

boolean:布尔类型,可以取值true,false,null//最好给一初值

变量的声明,使用 '%type'属性

declare

v_empno number(4);

v_empno2 emp.empno%type; // v_empno2的类型和emp表的empno字段的类型一样

v_empno3 v_empno2%type;  // v_empno3的类型和变量v_empno2的类型一样

begin

dbms_output.put_line('Test');

end;

/

//使用%type属性,可以使变量的声明根据表字段的类型自动变换,省去了维护的麻烦,而且%type属性,可以用于变量身上

n table变量类型(数组)

declare

//定义一种数组类型,内容的类型是emp.empno%type,下标类型为binary_integer

type type_table_emp_empno is table of emp.empno%type index by binary_integer;

//声明一个数组变量

v_empnos type_table_emp_empno;

begin

v_empnos(0) := 7369;

v_empnos(2) := 7839;

v_empnos(-1) := 9999;

dbms_output.put_line(v_empnos(-1));

end;

n record变量类型(结构体)

declare

type type_record_dept is record

(

deptno dept.deptno%type,

dname dept.dname%type,

loc dept.loc%type

);

v_temp type_record_dept;

begin

v_temp.deptno := 50;

v_temp.dname := 'aaa';

v_temp.loc := 'bj';

dbms_output.put_line(v_temp.deptno || ' ' || v_temp.dname);

end;

n 使用%rowtype声明record变量

declare

v_temp dept%rowtype;//结构体里的变量就是dept表的字段

begin

v_temp.deptno := 50;

v_temp.dname := 'aaa';

v_temp.loc := 'bj';

dbms_output.put_line(v_temp.deptno || ' ' || v_temp.dname);

end;

n select语句

必须且只能返回一条记录

declare

v_name emp.ename%type;

v_sal emp.sal%type;

begin

select ename, sal into v_name, v_sal from emp where empno = 7369;

dbms_output.put_line(v_name || ' ' || v_sal);

end;

declare

v_emp emp%rowtype;

begin

select * into v_emp from emp where empno = 7369;

dbms_output.put_line(v_emp.ename);

end;

n insert语句

declare

v_deptno dept.deptno%type := 50;

v_dname dept.dname%type := 'aaa';

v_loc dept.loc%type := 'bj';

begin

insert into dept2 values(v_deptno, v_dname, v_loc);

commit;

end;

n update语句

declare

v_deptno emp2.deptno%type := 10;

v_count number;

begin

--update emp2 set sal = sal/2 where deptno = v_deptno;

--select deptno into v_deptno from emp2 where empno = 7369;

select count(*) into v_count from emp2;

//sql是一个关键字,rowcount是sql的一个属性。

dbms_output.put_line(sql%rowcount || '条记录被影响');

commit;

end;

n DDL语言,数据定义语言

begin

execute immediate 'create table t (nnn varchar2(20) default ''aaa'')';

end;

n if语句

取出7369的薪水,如果<1200,输出'low',如果<2000输出'middle',否则'high'

declare

v_sal emp.sal%type;

begin

select sal into v_sal from emp

where empno = 7369;

if (v_sal < 1200) then

dbms_output.put_line('low');

elsif (v_sal < 2000) then

dbms_output.put_line('middle');

else

dbms_output.put_line('high');

end if;

end;

n 循环语句

declare

i binary_integer := 1;

begin

loop

dbms_output.put_line(i);

i := i + 1;

exit when (i >= 11);

end loop;

end;

---------

declare

j binary_integer := 1;

begin

while j < 11 loop

dbms_output.put_line(j);

j := j + 1;

end loop;

end;

-----------

begin

for k in 1..10 loop

dbms_output.put_line(k);

end loop;

for k in reverse 1..10 loop

dbms_output.put_line(k);

end loop;

end;

n 错误处理

declare

v_temp number(4);

begin

select empno into v_temp from emp where empno = 10;

exception

when too_many_rows then

dbms_output.put_line('太多纪录了');

when others then

dbms_output.put_line('error');

end;

----------

declare

v_temp number(4);

begin

select empno into v_temp from emp where empno = 2222;

exception

when no_data_found then

dbms_output.put_line('没有数据');

end;

n 日志程序

--创建事件日志表

create table errorlog

(

id number primary key,

errcode number,

errmsg varchar2(1024),

errdate date

)

--创建序列

create sequence seq_errorlog_id start with 1 increment by 1

--实验

declare

v_deptno dept.deptno%type := 10;

v_errcode number;

v_errmsg varchar2(1024);

begin

delete from dept where deptno = v_deptno;

commit;

exception

when others then

rollback;

v_errcode := SQLCODE;

v_errmsg := SQLERRM;

insert into errorlog values (seq_errorlog_id.nextval, v_errcode, v_errmsg, sysdate);

commit;

end;

推荐一个淘宝旗下网站,每天9块9包邮还返利。现在登录还有9元支付宝红包送你哦!http://invite.etao.com/67121619402a047e.htm

转载于:https://blog.51cto.com/owen563/1081216

【DB】Oracle学习笔记(5)相关推荐

  1. oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型

    oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...

  2. Oracle学习笔记---(一)

    Oracle学习笔记---(一) 一 1.Oracle简介     Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库:是一个对象关系数据库管理系统(ORDBMS).它提供了关系数据库 ...

  3. 在大量数据迁移期间oracle学习笔记

    在数据迁移期间oracle学习笔记 0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态 需求分析: 1.根据上述 ...

  4. oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网

    oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...

  5. 【Oracle】Oracle学习笔记

    [Oracle]Oracle学习笔记 目录 [Oracle]Oracle学习笔记 P1.Oracle数据库的安装和配置 P2.Oracle数据库管理 P3-0.初步SQL P3-1.基本SQL SEL ...

  6. oracle学习笔记 Oracle体系结构概述

    oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构. 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一块的将oracl ...

  7. Oracle学习笔记 字符集概述

    Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...

  8. oracle学习笔记 oracle软件安装准备工作 第一部分 环境准备

    oracle学习笔记   oracle软件安装准备工作  第一部分 环境准备 这节课对初学者来说内容较多,我把它分成了三篇. 即使这样也不可能把每个可能遇到的问题都说到,如果遇到没说到的问题自己上网搜 ...

  9. Oracle学习笔记(七)——分组统计查询

    Oracle学习笔记(七)--分组统计查询 基础统计函数的使用 分组统计操作的实现,结合多表查询使用分组统计 常用统计函数 COUNT(*|[DISTINCT]字段) MAX(字段,日期或数字) MI ...

  10. oracle update单引号,Oracle学习笔记:update的字段中包括单引号

    平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...

最新文章

  1. css控制显示行数,多出部分显示省略号
  2. Android O 8.0 以上 bitmap内存分配
  3. Windows下Appium环境搭建(java版)
  4. 2014 年第六届全国大学生数学竞赛预赛数学类最后一题参考解答
  5. sql server中对xml进行操作
  6. oracle系统包—-dbms_output用法
  7. java 限制日期格式_Java日期格式
  8. 高德最佳实践:Serverless规模化落地有哪些价值?
  9. hadoop 运行java类_hadoop运行java类
  10. 如何在win64位下搭载汇编环境?DOSbox教程之debug怎么使用?
  11. java 读取内存地址结构体_Java并发系列之volatile
  12. y480 linux无线网卡驱动,联想y480无线网卡驱动
  13. Cherno OpenGL 教程
  14. ApacheCN 活动汇总 2019.7.5
  15. idea 网页项目无法显示图片
  16. 阿里云企业邮箱2019
  17. 2021年电工(初级)考试题库及电工(初级)模拟考试
  18. 微信小程序直接上传文件到阿里云OSS组件封装
  19. 【图像修复】基于滤波实现损坏图像修复含Matlab源码
  20. Typora如何把图片上传到图床smms.app

热门文章

  1. java io读取文件_java io读取文件操作代码实例
  2. java ssdb查询_java连接ssdb数据库
  3. 从一张表里选择一列加入到另一张表_将Excel多个文件汇总到一张表
  4. sqlserver 2008r2 查看表结构及视图、版本及数据类型(字段)
  5. es支持的操作及性能
  6. 通过流程构建组织的【个人能力】和【团队能力】
  7. 软件汉化工具:eXeScope
  8. Erlang之父Joe Armstrong去世
  9. 波士顿动力十年对比刷屏,网友:以后该不会变成终结者吧?
  10. 让画面更逼真!这个强化超分辨率GAN让老游戏迎来第二春 | 代码+论文+游戏MOD...