24、视图:
a)创建视图:
create or replace view 视图名称 as
select 表A.字段1,表A.字段2,……,表B.字段1,表B.字段2……
from 表A,表B on 表A. 字段=表B.字段;
b)删除视图:
drop view 视图名称;
25、索引:
a)创建索引:
create index 索引名称 on 表名称 (列名称) [ tablespace 表空间名称];
注:索引还有其他多种类型,请参看书102-103页。
26、游标的使用:
a)动态游标:示例如下:
declare
存储游标的变量 test_tab%rowtype;
--定义游标
cursor 游标名称 is select * from test_tab where 条件;
begin
open 游标名称;--打开游标
loop – 对游标进行循环操作
fetch 存储游标的变量 into 游标名称; --将游标的值赋给变量
exit when 游标名称%notfound; --结束循环的条件
dbms_output.put_line (游标名称.字段名); --对赋值的变量操作
end loop;
close 游标名称;
end;
b)循环游标:(特点:可以直接对有表进行操作,不需要打开、显示赋值、显示判断结束的条件、关闭游标等) 建议使用改类型游标。示例如下:
declare
cursor 游标名称 is select * from cs_test where name='chenshan';
begin
for 变量 in 游标名称
loop
dbms_output.put_line(变量.字段名称);
end loop;
end;
c)ref 游标:(特点:可以在运行时才确定游标要执行的sql 语句,更加灵活)。其示例如下:
declare
type temp is ref cursor;
aa temp;
begin
if 条件 then
open 游标名称 for select * from cs_test where 条件;
elsif 条件 then
open 游标名称for select * from cs_goods where 条件;
else
open 游标名称for select * from cs_test where 条件;
end if;
fetch 游标名称 into 存储游标的变量
loop
具体的操作;
end loop;
close 游标名称;
end;
27、过程:
a)创建过程:
create or replace procedure (参数列表)
as
--本地变量申明
begin
--过程的主体操作
exception
when 条件 then
--错误处理;
end;
b):执行过程:
execute 过程名称(参数列表);
注:过程
c):将执行过程的权限授予其他用户
grant execute on 过程名 to 用户名;
注:过程的调用不应该在sql 语句块中;
d):删除过程
drop procedure 过程名;
28、函数:
a):创建函数
create [ or replace ] function function_name(parameter1,parameter2,......)—参数列表
return 要返回的数据类型
is | as
[ 本地变量声明 ];
begin
【函数主体】;
exception
when tiaojian then
【错误处理主体】;
end;
b):调用函数
可以为查询语句:
select 函数名称 from dual;;
也可以为pl / sql 语句块调用
begin
。。。。。。。。。。。。
调用函数;
。。。。。。。。。。。。
end;
c)将函数的使用权限授予其他用户:
grant execute on 函数名 to 用户名;
d)删除函数:
drop function 函数名称;
29、程序包:
a)程序包规范的创建:
create or replace package cs_manage_findindent as
--声明函数
function func_addgoodds (goodstypeid number , goodstypename varchar2) return varchar2;
--声明过程
procedure 过程名称(参数);
--声明游标
cursor 游标名称(参数) return 返回的数据类型;
end;
b)程序包主体的创建:
create [ or replace ] package body 程序包名称 is | as
--下面是函数主体
function func_addgoodds ( goodstypeid number , goodstypename varchar2 )
return varchar2 as
begin
insert into cs_ProduceType values ( goodstypeid , goodstypename );
return '操作成功' ;
exception
when others then
return '操作失败' ;
end ;
--下面是过程主体
procedure 过程名 (参数列表) as
begin
过程主体;--(pl/sql 语句块)
exception
when others then
错误主体;
end;
--下面是游标主体
cursor 游标名称 (参数列表) return 应该返回的数据类型(一般为表名称或者为 (表名称 % ROWTYPE) ) is 查询语句;
end;
注:程序包主要是用于包含过程,函数,游标等操作的集合,它的使用能够让pl/sql代码变得更加简洁、易懂,同时管理员管理起来也更加轻松。
程序包分为两个部分:一个为规范声明,另一个为程序包主体。顾名思义,规范声明是声明程序包中具体要实现的各种对象,而程序包主体则是具体实现规范声明中已经声明的各种对象。
程序保就好比是一本书,书的目录就相当于程序保的规范声明,而书中的章节内容就相当于是程序包的主体,它是对目录的一个实现。
30、触发器:
a)创建触发器:
create or replace trigger 触发器名称
before | after [ delete | update | insert ]
on 表名称
for each row
begin
--开始实现触发器的主体
insert into cs_test_temp values(:old.name,:old.age,:new.sex);
dbms_output.put_line('已经启动了触发器!!!');
exception
when others then
dbms_output.put_line('发现未知错误!!!');
end;
注:before | after 表示改触发器是在事件之前还是事件之后被触发。
[ delete | update | insert ]表示选择可以触发该触发器的事件。
for each row 表示对每一行的修改都会触发该触发器,即创建了一个行级触发器。
:old.name 表示事件之前name的值。
:new.sex 表示事件之后name的值。
31、产生随机数字的语法:
num := dbms_random . random ;
32、删除重复的记录:
delete from 表名称 where id in
( select id from 表名称 group by id having count( * ) > 1)
and
( select min( rowid ) from 表名称 group by id having count( * ) > 1) ;
注:group by 关键字用于将不重复的字段全部列出,以及将重复的字段列出一个。而having 则表示在group by 语句后的条件关键字,因为在group by 后面不能使用where条件关键字来使用条件语句。
分享到:
相关推荐
### Linux环境下Oracle数据库常用命令详解 #### 一、概述 在Linux环境中,Oracle数据库作为一款广泛使用的数据库管理系统,其操作与维护对系统管理员而言尤为重要。本文将详细介绍一系列Oracle数据库在Linux环境下...
四、小结 Linux 重启 Oracle 相关服务是一个复杂的过程,需要熟悉 Oracle 和 Linux 命令。通过了解各种重启方法和查看系统参数和硬件信息的命令,可以更好地管理和维护 Oracle 数据库和 Linux 操作系统。 相关...
小结 修改Oracle密码需要通过SQLPlus连接到数据库实例,然后使用alter user命令修改sys用户和system用户的密码。最后,需要启动监听器,以便其他客户端可以连接到Oracle数据库。在整个过程中,需要注意密码的安全性...
#### 六、小结 通过以上步骤,可以在 Linux 环境下顺利完成 Oracle 11g R2 数据库的安装。在整个过程中需要注意的是,每一步都需仔细检查和确认,以确保数据库系统的稳定性和安全性。此外,在实际部署环境中,还...
在Linux环境下安装Oracle数据库时,可能会遇到一系列的问题。本文主要针对三个常见的错误进行了总结和解决方案的提供。 **错误一:缺少libXp.so.6动态链接库** 这个问题出现在尝试运行Oracle安装程序时,系统提示找...
#### 小结 通过上述步骤,我们可以在Linux环境下实现Oracle数据库的定时备份。这种方法不仅简化了数据库管理员的工作流程,还提高了数据的安全性和可靠性。同时,根据实际需求调整备份策略,如增加增量备份、异地...
### SUSE Linux 常用命令知识点解析 #### 一、文件操作命令 **1. 复制文件或文件夹** - **命令**: `cp` - **用途**: 用于复制文件或目录。 - **示例**: - 将当前目录下的`123.txt`文件复制到`/home/temp`目录下: ...
#### 八、小结 本文详细介绍了在Linux环境下安装配置Oracle 10g的过程,包括启动和关闭Oracle实例、配置Oracle Enterprise Manager以及使用isqlplus等操作。通过这些步骤,新用户可以快速上手Oracle 10g的管理和...
### Oracle环境变量学习小结 #### 一、Oracle环境变量的重要性及作用 Oracle数据库系统作为全球最流行的数据库管理系统之一,在企业级应用中占有极其重要的地位。为了更好地管理和配置Oracle数据库,Oracle利用了...
#### 小结 通过上述步骤,我们可以手动地卸载 Linux 系统中的 Oracle Client。需要注意的是,在执行卸载操作之前,应确保已经备份了所有重要的数据和配置文件,以防万一出现意外情况导致数据丢失。此外,卸载过程中...
### Oracle ASM 常用知识小结 #### 一、ASM 概述 **ASM (Automatic Storage Management)** 是 Oracle 10g 引入的一种新型的存储管理技术,旨在为数据库提供高性能、高可用性以及易管理性的存储解决方案。通过 ASM...
### Linux使用小结 #### 一、安装中文输入法 1. **进入命令形式的客户端:** 首先确保已经登录到Linux系统的命令行界面。 2. **切换至root用户:** 输入 `su root` 并按Enter键,根据提示输入root用户的密码。 3. ...
### Oracle 10g (10.2.0.1.0) 升级至 10.2.0.5.0 在 Linux(RHEL5)下的详细步骤 #### 文档概述 本文档旨在提供Oracle 10g从10.2.0.1.0版本升级至10.2.0.5.0版本的操作指南,适用于Linux(RHEL5)系统环境。此文档由...
#### 四、小结 本文档详细介绍了Oracle 9i for Linux的安装准备工作,包括硬件与系统需求、核心参数修改以及用户组和用户的创建等关键步骤。对于初次接触Oracle数据库在Linux平台安装的用户来说,这些信息是非常...
了解这些命令对于监控Linux系统的性能和优化内存管理至关重要,特别是在资源紧张的情况下,比如运行大型数据库或其他内存消耗高的应用。如果你发现Swap空间不足,可能需要增加Swap分区大小或创建Swap文件,以确保...
目录 推荐序 前言 第1章 认识Oracle RAC 1.1 RAC产生的背景 1.2 RAC体系结构 1.2.1整体结构 1.2.2物理层次结构 1.2.3逻辑层次结构 1.3 RAC的特点 ...1.6本章小结 ...2.3.2安装Linux操作系统 ...15.5本章小结
#### 小结 通过上述步骤,可以在 Linux 64 位系统上成功安装并配置 Oracle 11g 数据库。这些步骤不仅可以帮助初学者快速上手,同时也为更高级的用户提供了性能优化和安全性的指导。在整个过程中,需要注意的是保持...