21+ORACLE实验指导(9)

2019-08-03 12:10

如果查询语句如下则没有用到索引I_ENAME: SELECT ENAME,JOB,SAL FROM EMP; 如果查询语句如下则用到索引I_ENAME: SELCT * FROM EMP WHERE ENAME = ‘JONES’; 6.删除索引

DROP INDEX I_ENAME;

7.创建一个用户

CREATE USER MYSELF IDENTIFIED BY MY; 8.修改用户口令

ALTER USER MYSELF IDENTIFIED BY ME; 9.对象权限授权

把DEPT 的SELECT对象权限授给MYSELF用户:

GRANT SELECT ON DEPT TO MYSELF; 把EMP的SELECT权限授给所有用户: GRANT SELECT ON EMP TO PUBLIC;

10.收回对象权限

从MYSELF收回所有DEPT的对象权限: REVOKE ALL ON DEPT FROM MYSELF; 收回所有用户对EMP的SELECT权限: REVOKE SELECT ON EMP FROM PUBLIC;

11.删除用户

DROP USER MYSELF;

四.上机作业

对基本表S、C和SC操作

1.建立男学生的视图,属性包括学号、姓名、选修课程和成绩。 2.在男学生视图中查询平均成绩大于80分的学生学号和姓名。 3.撤消生成的视图。

4.创建一个新用户NEWUSER。

5.使用GRANT语句,把对基本表S、C、SC的使用权限授给NEWUSER用户。6.使用REVOKE语句从NEWUSER手中收回基本表S、C、SC的使用权。 7.删除用户NEWUSER。

8.对基本表S按照S#生成一个索引。 9.对基本表C按照C#生成一个索引。 10.删除基本表C建立的索引。

第41页

第六章 PL/SQL

一.上机目的

1.了解PL/SQL在Oracle中的基本概念。 2.掌握PL/SQL的各组成部分。

3.PL/SQL的运用(存储过程,函数,异常)。

二.预备知识

在Oracle中有两种PL/SQL:一种是数据库引擎(engine)的组成部分,另一种是嵌入到许多Oracle工具中得独立引擎。将它们分别称为数据库PL/SQL和工具PL/SQL。两者非常相似,都具有相同得编程结构、语法和逻辑机制,工具PL/SQL另外增加了用于支持工具需求得句法。例如:在窗体上设置下压式按扭,以定位到屏幕的底部,此动作可用Oracle Forms系统中的PL/SQL来编程实现。为了实验的方便和结合教材,我们主要讨论数据库PL/SQL。

我们将用三个点(?)来表示省略。此三点并非代码的组成部分,仅表示此处某些代码与所介绍的内容关系不大,没必要列出。 1.PL/SQL字符集

和所有其他程序设计语言一样,PL/SQL也有一字符集。能从键盘上输入的字符集是PL/SQL的字符。此外,在某些场合,还有使用某些字符的规定。我们将要详细介绍:

? 用PL/SQL编程时可能使用的字符

? ? ?

算术运算符 关系运算符 杂符号

1)、合法字符

用PL/SQL程序时,允许使用下列字符: ? 所有大、小写字母 ? 数字0到9

? 符号:()+-*/〈 〉=!~;:.‘@ %,“# $ ^ & _ | { } ? [ ]

其中一些字符用于编程,另一些用作算术运算操作符(除法、加法、幂等)及关系运算符(等于和不等于)。例如:在通信应用程序中,开发人员可能会使用变量名“area_code“存放客户的呼叫区号。相应的变量名area_code要符合本章“变量”一节所给出的变量命名规则。

2)、算术运算符

下面列出了PL/SQL中常用的算术运算符: 运算符 意义 + 加法 - 减法 * 乘法 / 除法 ** 幂 关系运算符

第42页

下面列出了PL/SQL中常用的关系运算符: 运算符 意义 <> 不等于 != 不等于 ^= 不等于 < 小于 > 大于 = 等于 3)、杂符号

PL/SQL为支持编程,还使用下述符号。下面列出了部分符号,它们是最常用的。

表6-1 杂符号 符号 ( ) ; . , := || -- /*与*/ 样例 (‘Jones’,’Roy’,’Abramson’) 列表分隔 Procedure_name(arg1,arg2) 语句结束 项分隔(在例子中,用分隔Select * from account.table_name; account与table_name) if var1 = ‘SANDRA’ 字符串界定符 Rec_read := rec_read+1 赋值 Full_name:=’Nahtan’||’’||’Yebba’ 并置 --This is a comment 注释符 /*This too is a comment */ 注释定界符 意义 4)、变量

变量是PL/SQL中用来处理数据项所用的名字。根据下列规则选择变量名称: ? 变量必须以字母(A~Z)开头。

? 其后跟可选的一个或多个字母,数字(0~9)或特殊字符$、# 或_。 ? 变量长度不超过30个字符。 ? 变量名中不能有空格。

我们来看几个实例。表6-2给出了样例变量名并评价了其合法性。

表6-2 合法及不合法的变量名 变量名 合法否 理由 23_skidoo 不合法 必须以字母起头 Nature_trali 合 法 Nature-trali 不合法 特殊字符只能是$#_ love boat 不合法 不能含空格 a_very_insignificant_variable_name 不合法 长于30个字符 me_______and$$$$you 合 法 lots_of_$$$$$$ 合 法 23 不合法 未用字母起头 5)、保留字

保留字可视为PL/SQL版权所有的字符串。在定义变量名时,不能使用这些保留字。例如,词“loop”在PL/SQL中有特殊含义,因此下列代码是非法的:

declare

employee varchar2(30); loop number;

保留字不能用作变量名。完整的PL/SQL保留字表可以在Oracle8文档中找到。 2、常用数据类型

到目前为止,我们讨论了在PL/SQL中编程时允许使用的字符,变量的命名和保留字。

第43页

下面着重讨论数据类型。PL/SQL程序用于处理和显示多种类型的数据。和所有计算机软件一样,Oracle也将数据类型分成大量的子类。例如:数可分为整型(不允许有小数)和小数(有一位小数或多位小数)类。PL/SQL支持多种数据类型,本节讨论代码中最常用并且最实用的数据类型。 ? Varchar2 ? Number ? Date ? Boolean

1)、Varchar2

Varchar2为可变长的字母数字数据类型。在PL/SQL中,varchar2的最大长度为32767字节。在declare部分其定义以分号(;)结束,所有varchar2变量的定义类似于下定义 Variable_name varchar2(max_length);

括号中的长度值为本变量的最大长度且必须是正整数,如: vc_field varchar2(10);

在定义变量时,可以同时对其进行初始化,格式为: vc_field varchar2(10) :=’STARTVALUE’ ;

2)、number

number型数据可用来表示所有的数值数据,说明格式为:

num_field number(precision, scale );

其中,precision 可以有1到38个数字位,而scale表示在precision位数字中小数点后的数字位数,下面的定义:

num_field number(12,2);

表示num_field是一个整数部分最多10位,小数部分最多2位的变量。 3)、date

此数据类型用于保存固定长度的日期值,date变量的说明为:

date_field date;

在缺省时,Oracle以DD-MON-YY格式显示日期。

4)、Boolean

这种数据类型只有两个值:TRUE或FALSE。在使用boolean变量时,如果测试结果为TRUE,则做某事,否则做另外的事。例:如果试图考察某公司是否分发了一个10KB的2000年年度预算表,可用boolean变量,若该公司分发了此表,则该变量值为TRUE。 3.PL/SQL的组件

下面讨论PL/SQL是如何构成的。PL/SQL提供了一组标准的自计算机出现以来开发人员一直在使用的程序化了的技术:逻辑、循环以及错误处理机制。 我们将详细讨论下列内容: ? 块结构编码;

? 变量声明;

? 控制结构。包括程序控制,if逻辑结构以及循环结构; ? 异常处理(exception);

1)、块结构(Block structure)

PL/SQL程序是由独立的变量声明、执行代码和异常处理等部分代码块写成的。PL/SQL可以作为一个命名的子程序存放在数据库中,或直接在SQL*Plus窗口中作为一个匿名的块编码。当在数据库中存储PL/SQL时,子程序包括存储单元命名的头部分,程序类型的声明;以及可选的in, out 和in out参数的定义。只是可执行部分定义为begin 和end语句是固定的。

第44页

Declare 和exception部分是可选的。

下面在一个无名块上和一个存储过程的例子。 --无名块 declare … begin … end;

--存储过程

create or replace precodure_name as --声明部分自动跟着语句而不需要编码。

… …

begin … … exception end; /

PL/SQL块可以嵌套,在主begin/end块中可以产生无数的BEGIN/END块。我们演示怎样控制错误发生时的程序流程以后,PL/SQL好处将变得明显。这将在本章的异常部分讨论。在嵌套的块中嵌套块是可以接受的或者在外块中有许多begin/end块。下面是一个嵌套块的例子:

Create or replace procedure calculate_redate (pharmacy_id in number) as

… … begin … … … … exception …

第45页

… …

begin … … exception

… … end;


21+ORACLE实验指导(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《国际结算》期末试卷及参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: