oracle数据库基础知识

……

End loop

--1

declare

pnum number(4):=0;

begin

while pnum < 10 loop

dbms_output.put_line(pnum);

pnum := pnum + 1;

end loop;

end;

--2 (最常用的循环)

declare

pnum number(4):=0;

begin

loop

exit when pnum=10;

pnum:=pnum+1;

dbms_output.put_line(pnum);

end loop;

end;

--3

declare

pnum number(4);

begin

for pnum in 1 .. 10 loop

dbms_output.put_line(pnum);

end loop;

end;

----------------------------------

--游标

语法:

CURSOR 游标名 [ (参数名 数据类型,参数名 数据类型,...)] IS SELECT 语句;

例如:cursor c1 is select ename from emp;

declare

cursor c1 is

select * from emp;

emprec emp%rowtype;

begin

open c1;

loop

fetch c1

into emprec;

exit when c1%notfound;

dbms_output.put_line(emprec.empno || ' ' || emprec.ename);

end loop;

close c1; --要记得关闭游标

end;

--------例外

--异常,用来增强程序的健壮性和容错性

-- no_data_found (没有找到数据)

--too_many_rows (select …into语句匹配多个行)

--zero_divide ( 被零除)

--value_error (算术或转换错误)

--timeout_on_resource (在等待资源时发生超时)

--写出被0除的例外程序

declare

pnum number(4) := 10;

begin

pnum := pnum / 0;

exception

when zero_divide then

dbms_output.put_line('被0除了');

when value_error then

dbms_output.put_line('算术或转换错误');

when others then

dbms_output.put_line('其他异常');

end;

--自定义异常

--No_data exception;

--要抛出raise no_data;

declare

cursor c1 is

select * from emp t where t.deptno = 20;

no_data exception;

emprec emp%rowtype;

begin

open c1;

loop

fetch c1

into emprec;

if c1%notfound then

raise no_data;

else

dbms_output.put_line(emprec.empno || ' ' || emprec.ename);

end if;

end loop;

close c1;

exception

when no_data then

dbms_output.put_line('无员工');

when others then

dbms_output.put_line('其他异常');

end;

--存储过程

语法:

create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]

AS

begin

PLSQL子程序体;

End;

或者

create [or replace] PROCEDURE 过程名[(参数名 in/out 数据类型)]

is

begin

PLSQL子程序体;

End 过程名;

-----创建一个存储过程helloworld

create or replace procedure helloworld is

begin

dbms_output.put_line('hello world');

end helloworld;

------创建一个涨工资的

create or replace procedure addsal(eno in emp.empno%type) is

emprec emp%rowtype;

begin

select * into emprec from emp t where t.empno = eno;

update emp t set t.sal = t.sal + 100 where t.empno = eno;

dbms_output.put_line('涨工资前是' || emprec.sal || ',涨工资后是' ||

(emprec.sal + 100));

end addsal;

----------------------------------------------

--java代码调用存储过程和函数

--存储过程

--

create or replace procedure acc_yealsal(eno in emp.empno%type,yearsal out number) is

pcomm emp.comm%type;

psal emp.sal%type;

begin

select t.sal,t.comm into psal,pcomm from emp t where t.empno=eno;

yearsal :=psal*12 +nvl(pcomm,0);

end;

----存储函数

create or replace function 函数名(Name in type, Name in type, .. .)

return 数据类型 is

结果变量 数据类型;

begin

return(结果变量);

end函数名;

--存储函数计算年薪

create or replace function accf_yearsal(eno in emp.empno%type)

return number is

Result number;

psal emp.sal%type;

pcomm emp.comm%type;

begin

select t.sal, t.comm into psal, pcomm from emp t where t.empno = eno;

Result := psal * 12 + nvl(pcomm, 0);

return(Result);

end accf_yearsal;

-----------------------------------

---触发器

--触发语句:增删改:

语法:

CREATE [or REPLACE] TRIGGER 触发器名

{BEFORE | AFTER}

{DELETE | INSERT | UPDATE [OF 列名]}

ON 表名

[FOR EACH ROW [WHEN(条件) ] ]

begin

PLSQL 块

End 触发器名

---插入一个新员工则触发

create or replace trigger insert_person

after insert on emp

begin

dbms_output.put_line('插入新员工');

end;

select *from emp;

insert into emp values(1001,'李四','管理',7902,sysdate,100,100,20);

--raise_application_error(-20001, '不能在非法时间插入员工')

--==============================================================================

SQL> @ E:\powerDesigner\A_脚本\user.sql --导入脚本文件

select *from H_USER ;

insert into h_user valuer(sequserid.nextval,'a','a',sysdate,'北京',1);

--------------------------------------------------------------

--数据库建模

--一对多:多的一端是2,箭头指向的是表1,即少的一端

--在实体类中一的一端的实体类有多的一端的实体类的集合属性

--使用powerDesiger进行数据库建模,然后将数据导入,导入到plsql中进行使用

--------------------连接远程数据库

--方法1,修改localhost的地址

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl.lan)

)

)

--方法2

--或者直接在登陆界面在database中输入远程数据库的ip地址和端口号进行远程登陆

oracle数据库中基础知识,oracle数据库基础知识相关推荐

  1. 数据库中的九种数据库对象

    数据库中的九种数据库对象 数据库对象是数据库的组成部分,常见的有以下几种: 1.表(Table ) 数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的.列由同 ...

  2. oracle数据库中常用语法,oracle数据库常用语法(中文注释版)

    -- 查看系统所有变量值 show all -- 显示当前连接用户 show user -- 显示表结构 desc 表名 -- 显示错误 show error -- 退出 exit; 表空间是数据库中 ...

  3. oracle数据库中索值,Oracle数据库中的索引详解

    Oracle数据库中的索引详解以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一 ROWID的概念 存储了row在数据文 ...

  4. vs2015如何连接oracle,VS2015中C#连接Oracle数据库

    硬件环境:Win10 64位+ VS2015 + ODP.Net for VS2015 配置ODP.Net Oracle Developer Tools for Visual Studio 12.1. ...

  5. oracle数据库中的回收站,Oracle 10G 中的"回收站"-数据库专栏,ORACLE

    oracle 10g 中的"回收站" by fenng http://www.dbanotes.net 在oracle 10g中,引入了一个回收站(recycle bin)的概念. ...

  6. Oracle数据库中的同义词,数据库链接和序列

    目录 1.同义词 (1)可视化方法创建同义词 (2)命令方式创建同义词 (3)删除同义词 2.数据库链接 (1)可视化方式创建 (2)使用命令方式 (3)为远程数据库的表创建同义词 (4)删除数据库链 ...

  7. oracle asm中candidate,【Oracle ASM】关于asm实例与db实例中的磁盘状态_详细分析过程...

    现象描述ITPUB个人空间O Q9g.B,c/j操作系统: Enterprise Linux 5.5ITPUB个人空间z7f$Lu#\"f V :oracle 10.2.0.4 RAC+AS ...

  8. Oracle区分中文和英文,oracle中中英文段落划分实现

    oracle中关于中文占用字节数,不同的数据库有不同的情况,有的占用两个字节.有的占用三个字节,现在测试环境的数据库中文占用三个字节,要实现由中英文组成的段落字符串,按照每行占用多少字节重新分段,具体 ...

  9. spring datasource oracle,spring中2种oracle数据源的配置

    value="${proxool.maxConnCount}" /> value="${proxool.minConnCount}" /> valu ...

  10. 数据库中html数据类型,常用数据库的字段类型及大小

    Oracle/MSSQL/Mysql 常用数据库的字段类型及大小 ORACLE的数据类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 ...

最新文章

  1. latex中的各种文件
  2. 用node.js启动mock.js
  3. springboot 打卡功能_实战:如果让你用SpringBoot实现签到奖励的功能,你会怎么做?...
  4. Spark(4)——transformation、action、persist
  5. 加快信息化建设对地方发展的_加快设计师职业发展的9种方法
  6. 请求失败或服务未及时响应 有关详细信息_微服务治理与统计分析
  7. linux系统如何启用安全内核,安全 - Linux 内核引导选项简介
  8. 系统分析和设计方法之系统分析
  9. vue 播放.aac格式的音频文件
  10. 苹果系统“加载图片时提示“无法置入jpg,因为暂存盘已满”怎么解决?
  11. java计算机毕业设计-智慧农业水果销售系统源码+mysql数据库+系统+lw文档+部署
  12. luogu P5336 [THUSC2016]成绩单
  13. dubbo整合springboot图解版(九)
  14. k1075停运吗_要外出的街坊注意!受台风影响,最近三天这些火车班次停运
  15. android md5加密登录,Android开发之MD5加密
  16. 极客日报:腾讯反舞弊通报近 70 人被辞退;库克遭陌生可疑女子威胁;英伟达回应放弃收购 ARM 传闻
  17. 计算机专业自我认知swot,计算机专业自我认知.doc
  18. 交流中交易:金融业的专业社交
  19. 解决“ImportError: cannot import name 'imresize'”
  20. java导出数据为乱码_传参导出Excel表乱码问题解决方法

热门文章

  1. 基于XML使用MyBatis
  2. C++模板类与Java泛型类
  3. 无序列表圆点变空心_前端HTML -- 列表标签
  4. 【英语学习】【WOTD】minion 释义/词源/示例
  5. eval() python_python的eval和exec的区别与联系
  6. 2.2基本算法之递归和自调用函数_用栈算法递归解决汉诺塔问题
  7. 为系统扩展而采取的一些措施——缓存
  8. Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑)
  9. GPU并行计算OpenCL(1)——helloworld
  10. linux 运行程序的方法,linux 长期运行程序的 四种方法