资源描述
Oracle数据库
实验指导
段华斌 编著
计算机与通信工程系
实验一
实验名称:数据库的管理
实验学时:2
实验目的:
1)了解Oracle数据库的逻辑结构和物理结构。
2)熟悉Oracle的命令操作环境SQL*PLUS。
3)了解启动和关闭数据库的不同方式及其优缺陷。
4)熟悉掌握各种启动、关闭方式。
实验内容及环节:
1、 SQL*Plus的启动与关闭
(一)SQL*Plus的启动
当登录到操作系统后,有三种方法启动SQL*Plus。
方法一:
(1) 执行“开始”→“程序”→“Oracle – OraDb11g_home1”→“应用程序开发”→“SQL Plus”命令,打开SQL Plus窗口,显示登录界面。
(2) 在登录界面中将提醒输入用户名,根据提醒输入相应的用户名和口令(例如system和admin)后按Enter键,SQL*Plus将连接到默认数据库。
(3) 连接到数据库之后,显示SQL>提醒符,可以输入相应的SQL命令。
方法二:
(1) 执行“开始”→“程序”→“附件”→“命令提醒符”,打开命令提醒符窗口。
(2) 输入命令:Sqlplus / nolog
Connect sys/口令 as sysdba
方法三:
(1) 执行“开始”→“程序”→“附件”→“命令提醒符”,打开命令提醒符窗口。
(2) 输入命令:sqlplus 用户名/口令 as sysdba。
(二)断开与数据库的连接
SQL>DISCONNECT
(三)退出SQL*Plus
SQL>EXIT
或:
SQL>Quit
(四)启动sqlplus,也许的故障ORA-12560
导致ORA-12560: TNS: 协议适配器错误的问题的因素有三个:
(1)监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动TNSlistener服务。
(2)database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX,XXXX就是你的database SID.
(3)进入sqlplus前,在command line下输入 set oracle_sid=XXXX,XXXX就是你的database SID。
2、 使用shutdown命令关闭数据库
练习使用shutdown命令关闭数据库实例,分别按以下方式启动数据库实例。
(1)正常关闭。等待当前所有已连接的用户断开与数据库的连接,然后关闭数据库。正常关闭的语句如下:
SHUTDOWN NORMAL
(2)立即关闭。回退活动事务解决并断开所有已连接的用户,然后关闭数据库。 立即关闭语句如下:
SHUTDOWN IMMEDIATE
(3)事务关闭:完毕事务解决后断开所有已连接的用户,然后关闭数据库。事务解决关闭语句如下:
SHUTDOWN TRANSACTIONAL
(4)中止关闭:中止数据库实例, 立即关闭数据库。中止关闭的语句如下:
SHUTDOWN ABORT
3、 使用startup命令启动数据库
练习使用STARTUP命令启动数据库实例,分别按以下方式启动数据库实例。
(1)启动数据库实例时不装载数据库。执行此操作的命令如下:
STARTUP NOMOUNT
(2)启动数据库实例,装载数据库,但不打开数据库。通常在数据库维护时执行此操作,相应的命令如下:
STARTUP MOUNT
(3)启动后限制对数据库实例的访问。执行此操作的命令如下:
STARTUP RESTRICT
(4)强制实例启动。在碰到特殊异常的情况时,可以强制启动实例。强制启动实例的语句如下:
STARTUP FORCE
4.改变数据库的状态
(1)装载数据库实例。
在执行某些管理操作时,数据库必须启动、装载一个实例,但此时数据库处在关闭状态。
ALTER DATABASE MOUNT
(2)打开已关闭的数据库。
ALTER DATABASE OPEN
(3)以只读方式打开数据库。
ALTER DATABASE OPEN READ ONLY
思考题:
1、在数据库的nomount、mount、open三种模式下,分别打开数据库的什么文献?
2、当关闭数据库时使用shutdown命令,好久没有关闭,随即将“命令提醒符”窗口关闭,之后重新“启动命令提醒符”并登录SQL*PLUS,使用shutdown immediate关闭数据库出现如下问题如何解决?
ORA-24324: 未初始化服务句柄
ORA-24323: 不允许此值
ORA-01090: 正在关闭 - 不允许连接
3、如何把数据库从nomount状态改为mount状态?
实验二
实验名称:日记文献的管理
实验学时:2
实验目的:
1)了解日记文献的作用。
2)了解管理重做日记文献的准则。
3)掌握重做日记文献组及成员的添加、清除、删除等操作方法。
实验内容及环节:
重做日记文献对于Oracle数据库来说是至关重要的,Oracle数据库的变化,都会生成相应的重做日记,这些日记被记录在重做日记文献中。
1、 重做日记文献的查看
(1)查看数据库各组联机重做日记文献的日记序列号:
SQL>ARCHIVE LOG LIST;
SQL>SELECT GROUP#,SEQUENCE# FROM V$LOG;
(2)查看日记文献组的状态:
SQL>SELECT GROUP#,STATUS FROM V$LOG;
(3)查看重做日记组及其成员的基本信息:
SQL>SELECT GROUP#,STATUS,MEMBER FROM V$LOGFILE;
2、 添加重做日记文献组
SQL>ALTER DATABASE ADD LOGFILE
2 GROUP 4 ('E:\REDO04_1.LOG')
3 SIZE 10M;
3、 添加重做日记文献组的成员
方法一:
SQL>ALTER DATABASE ADD LOGFILE MEMBER
2 'E:\REDO04_2.LOG'
3 TO GROUP 4;
方法二:假如不知道组编号,可以通过下述操作向组中其他成员的名称来添加新的成员:
SQL>ALTER DATABASE ADD LOGFILE MEMBER
2 'E:\REDO04_3.LOG'
3 TO
4 (‘E:\REDO04_1.log’,’ 'E:\REDO 04_2.log’);
查询v$log可以看到添加完毕后的结果:
SQL>SELECT GROUP#,MEMBERS,STATUS,FIRST_TIME FROM V$LOG;
4、 删除重做日记文献组成员:
SQL>ALTER DATABASE DROP LOGFILE MEMBER ' E:\REDO04_3.LOG ';
5、 删除重做日记文献组:
SQL>ALTER DATABASE DROP LOGFILE GROUP 4;
也许的错误信息:
Ora-01623:日记10 是实例orcl的当前日记。
解决方法:
SQL> alter system switch logfile;
SQL> select * from v$log;
交替日记文献组,假如多次切换后想要删除的重做日记组状态依旧是active的时候可以重启动一下数据库。
6、 清除重做日记文献组:
SQL>ALTER DATABASE CLEAR LOGFILE GROUP 3;
7、 改变数据库的归档模式:
(1) 修改初始化参数 ,指定归档位置和归档日记文献的命名方法。
SQL> ALTER SYSTEM
2 SET LOG_ARCHIVE_DEST='D:\ORACLE\ORADATA\ARCHIVE';
SQL> ALTER SYSTEM
2 SET LOG_ARCHIVE_DUPLEX_DEST='E:\ORACLE\ARCHIVE';
SQL> ALTER SYSTEM
2 SET LOG_ARCHIVE_FORMAT='%R_%T_%S.ARC' SCOPE=SPFILE;
(2) 关闭数据库实例SHUTDOWN IMMEDIATE;
(3) Startup mount;
(4) Alter database archivelog;
(5) Alter database open;
8、 强制进行日记切换,以检查日记文献能否对的归档。
SQL>ALTER SYSTEM SWITCH LOGFILE;
在资源管理器中查看指定归档位置下的归档日记文献。
9、 查看数据库的当前模式:
SQL>SELECT NAME,LOG_MODE FROM V$DATABASE;
10、 查看数据库的归档进程信息:
SQL>SELECT * FROM V$ARCHIVE_PROCESSES;
11、 查询数据库的归档日记文献名称、重做日记序列号以及每次归档的完毕时间等。
SQL>SELECT NAME,SEQUENCE#,COMPLETION_TIME FROM V$ARCHIVED_LOG;
思考题:
1、 移动、重命名重做日记文献成员的环节如下,请完毕各环节的命令代码。
(1)关闭数据库。
(2)将重做日记文献E:\REDO04_3.LOG移动或复制到D盘,并重命名为REDO04_03.LOG。
(3)以MOUNT状态打开数据库。
(4)重命名数据库的重做日记文献。
(5)打开数据库。
(6)查看重做日记文献信息。
2、在实验内容中添加重做日记文献组group4时,是否可以将group4 改为group1?改为group6呢?请分别说明因素。
3、当重做日记文献组被清除后,该组还可以继续使用吗?为什么?
实验三
实验名称:角色和用户管理
实验学时:2
实验目的:
1)了解数据库用户。
2)熟悉创建、更改、删除、查看用户的方法。
3)了解数据库的不同权限。
4)掌握权限的授予和回收的方法。
5)了解权限、角色的不同点以及它们之间的关系。
6)纯熟掌握对角色的管理。
实验内容及环节:
在Oracle中,只有具有一定权限的用户才干对数据库进行操作。在安装Oracle时,数据库自身会自动创建一些用户或帐户,如SYS、SYSTEM、SYSMAN、DBSNMP等,这些预定义的用户具有特殊的权限能管理数据库。用SYS用户来实现创建、更改、删除用户等操作。
1、 创建用户
CREATE USER语句在数据库中创建新用户,语法如下:
CREATE USER <用户名>
IDENTIFIED {BY <口令>|EXTERNALLY|GLOBALLY}
[ PASSWORD EXPIRE ]
[ ACCOUNT LOCK | UNLOCK ]
[TEMPORARY TABLESPACE <临时表空间>];
[DEFAULT TABLESPACE <默认表空间>]
[QUOTA quota [ K | M ] | UNLIMITED ON 表空间]
[ PROFILE 概要文献 ]
例1:创建管理用户USERMAN。
CREATE USER USERMAN IDENTIFIED BY USERMAN;
2、 更改用户
ALTER USER语句也可以修改用户信息。
(1) 修改密码密码。
例2:将用户USERMAN的密码修改为NewPassword:
ALTER USER USERMAN IDENTIFIED BY NewPassword;
(2)PASSWORD EXPIRE关键词设立密码过期。
例3:设立用户USERMAN的密码立即过期,它在下一次登录时必须修改密码:
ALTER USER USERMAN PASSWORD EXPIRE;
(3)ACCOUNT LOCK关键词锁定用户。
例4:锁定用户USERMAN,使其无法登录到数据库:
ALTER USER USERMAN ACCOUNT LOCK;
(4)ACCOUNT UNLOCK关键词解锁用户。
例5:解除对用户USERMAN的锁定:
ALTER USER USERMAN ACCOUNT UNLOCK;
3、 删除用户
DROP USER语句也可以删除指定的用户。
DROP USER 用户名 [CASCADE];
4、 查询用户
例5:SELECT username, profile,account_status,created
FROM dba_users
WHERE username=’ty’;
不同用户可以对数据库进行不同的操作,所有对数据库可以进行操作的用户都必须具有一定的操作权限,而不同用户权限不全相同。为不同用户赋予不同权限的目的是为了保证数据库的安全,以下关于用户赋予、回收权限的操作。
5、 授予系统权限
使用GRANT语句,其语法如下:
GRANT system_privilege [ , ... ] TO
{ user_name [ , ... ] | role_name [ , ... ] | PUBLIC }
[ WITH ADMIN OPTION ] ;
例6:对于用户USERMAN授予SYSDBA角色:
GRANT SYSDBA TO USERMAN;
6、 授予对象权限
使用GRANT语句,其语法如下:
GRANT object_privilege [ , ... ] | ALL [ PRIVILEGES ] ON <schema.>object_name
TO { user_name [ , ... ] | role_name [ , ... ] | PUBLIC }
[ WITH GRANT OPTION ] ;
Oracle数据库的权限太多,对权限的管理工作太复杂,使用角色可以很好的解决这个问题。角色是权限的集合,以下关于角色的管理。
7、 创建角色
创建角色的语法如下:
Create role 角色名
[not identified | identified {by 口令|externally|globally}];
例7: 创建一个角色sr_admin,还用数据库口令认证方式。
create role sr_admin identified by admin;
8、 给角色授权
给角色授权的语法如下:
Grant {All|对象权限1 [,对象权限2…] }[列1[,列2]…]
On{[模式名.]对象名|directory 目录名}
to 角色 [with grant option];
例8:grant create session to sr_admin;
9、 删除角色
Drop role 删除角色 格式:
Drop role 角色;
思考题:
完毕如下操作的命令代码:
1、 以sys用户登陆sqlplus.
sqlplus sys/123 as sysdba
2、 创建角色role1。
Create role role1
3、为角色role1授予create session、resource权限。
grant create session to role1;
grant resource to role1;
3、 创建用户,指定密码、表空间。用户名命名以本人姓名的拼音首字母缩写+‘_’+学号最后两位。
Create user ty_06
identified by 123
default tablespace users
temporary tablespace temp;
5、修改用户密码。
alter user ty06 identified by 123;
6、为用户授予系统权限UNLIMITED TABLESPACE。
grant UNLIMITED TABLESPACE to ty06;
7、为用户指定角色role1。
grant role1 to ty06;
8、收回用户的UNLIMITED TABLESPACE权限。
revoke UNLIMITED TABLESPACE from ty06;
9、锁定用户。
10、解锁用户。
12、删除用户。
13、删除角色role1。
14、忘掉SYS用户的解决方法。
Sqlplus / as sysdba
Alter user sys identified by 123;
Commit;
Connect sys/123 as sysdba
实验4
实验名称:表的管理
实验学时:4
实验目的:
1)了解Oracle表和视图的概念。
2)纯熟掌握使用SQL语句创建表。
3)学习使用SELECT语句查询数据。
实验内容及环节:
1、 创建表
CREATE TABLE语句的基本使用方法如下所示:
CREATE TABLE [<schema>.]<tablename>
( <column_name1> <datatype> [DEFAULT expr] [CONSTRAINT constraint_name constraint_def]
[, <column_name2> <datatype> [DEFAULT expr]
[CONSTRAINT constraint_name constraint_def],…]
[CONSTRAINT constraint_name constraint_def]]
[TABLESPACE 表空间名]
[PCTFREE n]
[PCTUSED n]
[INITRANS n]
[STORAGE (storage)])
例1、创建表Users,SQL语句如下:
CREATE TABLE dhb.Users1
(UserId Number Primary Key,
UserName Varchar2(40),
UserType Number(1),
UserPwd Varchar2(40));
2、 修改表
添加列语法形式如下:
ALTER TABLE [schema.] table_name
ADD new_column data_type [dafault expr ]
[CONSTRAINT constraint_name constraint_def]
[, <new_column> <datatype> [DEFAULT expr]
[CONSTRAINT constraint_name constraint_def],…];
例2、在表Users中添加一个列tmpcol:
SQL> ALTER TABLE Users ADD (tmpcol NUMBER(5,2));
3、 插入数据
INSERT语句的基本使用方法如下所示:
INSERT INTO <表名> (列名1, 列名2, …, 列名n)
VALUES (值1, 值2, …, 值n);
例3、向表Users中插入数据
INSERT INTO Users (UserId, UserName, UserType, UserPwd) VALUES ( 1, 'Admin', 1, 'Admin');
COMMIT;
4、 修改数据
UPDATE语句的基本使用方法如下所示:
UPDATE <表名> SET 列名1 = 值1, 列名2 = 值2, …, 列名n = 值n
WHERE <更新条件表达式>
例4、将用户Admin的密码修改为111111:
UPDATE Users
SET UserPwd='111111'
WHERE UserName='Admin';
COMMIT WORK;
5、 删除数据
DELETE命令删除表中的数据:
DELETE <表名>
WHERE <删除条件表达式>
例5、删除表Users中列UserName等于空('')的数据:
DELETE FROM Users WHERE UserName = '';
COMMIT WORK;
6、 查询数据
(1)SELECT语句的基本语法结构如下:
SELECT子句 [ INTO 子句 ]
FROM 子句
[ WHERE 子句 ]
[ GROUP BY 子句]
[ HAVING 子句 ]
[ ORDER BY 子句 ]
SELECT语句中各子句的说明:
SELECT子句
描述
SELECT子句
指定由查询返回的列
INTO 子句
创建新表并将结果行插入新表中
FROM 子句
指定从其中检索行的表
WHERE 子句
指定查询条件
GROUP BY 子句
指定查询结果的分组条件
HAVING 子句
指定组或聚合的搜索条件
ORDER BY 子句
指定结果集的排序
UNION运算符
将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的所有行
COMPUTE子句
生成合计作为附加的汇总列出现在结果集的最后。当与BY一起使用时,COMPUTE子句在结果集内生成控制中断和分类汇总。可在同一查询内指定COMPUTE BY和COMPUTE
FOR子句
FOR子句用于指定BROWSE或XML选项
OPTION子句
应在整个查询中使用指定的查询提醒。每个查询提醒只能指定一次,但允许指定多个查询提醒。用该语句只也许指定一个OPTION子句。查询提醒影响语句中的所有运算符。假如主查询中涉及UNION,则只有涉及UNION运算符的最后一个查询可以有OPTION子句。
例6、在SELECT语句中查询指定的列名
COL EMP_NAME FORMAT A20
COL SEX FORMAT A10
COL TITLE FORMAT A10
SELECT Emp_name, Sex, Title FROM dhb.Employees;
(2)使用ROWNUM
(3)使用LIKE关键字实现模糊查询
Oracle的通配符及其含义
%
包含零个或多个任意字符的字符串
_
任意单个字符
?
任意单个字符
#
表达0——9的数字
[]
指定范围或集合中的任意单个字符
查询所有身份证号中包含ddd的员工记录
例7、SELECT EMP_NAME, TITLE, IDCard FROM DHB.Employees
WHERE IDCard LIKE '%ddd%';
(3)在SELECT中使用DECODE函数
DECODE函数语法如下:
DECODE(<输入值>,<值1>,<结果1>,[,<值2>,<结果2>…][,<默认结果>])
假如<输入值>等于<值1>,则DECODE函数返回<结果1>;假如<输入值>等于<值2>,则DECODE函数返回<结果2>,以此类推。假如参数列表中没有与<输入值>相等的值,则DECODE函数返回<默认结果>
例8、SELECT Emp_name, DECODE(Sex, '男', '先生', '女', '女士', '未知') AS Sex
FROM DHB.Employees;
(4)在SELECT中使用CASE函数
CASE函数还可以根据不同逻辑表达式是否成立来决定函数的返回值,语法如下:
CASE
WHEN <逻辑表达式1> THEN <结果1>
[WHEN <逻辑表达式2> THEN <结果2> …]
[ELSE <默认结果>]
END
例9:在Employees中,将员工工资分3个级别,工资小于等于3000的级别为低,工资大于3000且小于5000的级别为中,工资大于等于5000的级别为高。
SELECT Emp_name, Wage, CASE WHEN Wage<=3000 THEN '低' WHEN Wage>3000 AND Wage<5000 THEN '中' WHEN Wage>=5000 THEN '高' END AS GRADE
FROM DHB.Employees;
(5)保存查询结果
在CREATE TABLE语句中使用SELECT子句可以将查询结果集填充到新建的表中。新表的结构由选择列表中列的特性定义。语法如下:
CREATE TABLE <新表名> AS
<SELECT 查询>
例10:将办公室的所有员工的姓名和职务信息保存到表Office中:
CREATE TABLE DHB.Office AS
SELECT e.Emp_Name, e.Title
FROM DHB.Employees e, DHB.Departments d
WHERE e.Dep_id = d.Dep_Id AND d.Dep_Name = '办公室';
思考题:
1、创建用户,指定密码、表空间。用户名命名以本人姓名的缩写+_+学号后两位命名。
2、创建如下表,将表保存到自己的用户方案中。
学生表:student
字段名称 字段类型 约束
sno varchar2(10) 主键
sname varchar2(20)
sage number(2)
ssex varchar2(5)
CREATE TABLE student
(sno varchar2(10) Primary Key,
sname varchar2(20),
sage number(2),
ssex varchar2(5));
教师表:teacher
tno varchar2(10) 主键
tname varchar2(20)
CREATE TABLE teacher
(tno varchar2(10) Primary Key,
tname varchar2(20));
课程表:course
cno varchar2(10) 与tno联合做主键
cname varchar2(20)
tno varchar2(20)
CREATE TABLE course
(cno varchar2(10),
cname varchar2(20),
tno varchar2(20),
Primary Key(cno,tno));
成绩表:sc
sno varchar2(10) 与cno联合做主键
cno varchar2(10)
score number(4,2)
create table sc(
sno varchar2(10),
cno varchar2(10),
score number(4,2),
primary key (sno,cno)
);
3\为各表输入数据。
insert into student values ('s001','张三',23,'男');
insert into student values ('s002','李四',23,'男');
insert into student values ('s003','吴鹏',25,'男');
insert into student values ('s004','琴沁',20,'女');
insert into student values ('s005','王丽',20,'女');
insert into student values ('s006','李波',21,'男');
insert into student values ('s007','刘玉',21,'男');
insert into student values ('s008','萧蓉',21,'女');
insert into student values ('s009','陈萧晓',23,'女');
insert into student values ('s010','陈美',22,'女');
commit;
insert into teacher values ('t001', '刘阳');
insert into teacher values ('t002', '谌燕');
insert into teacher values ('t003', '胡明星');
commit;
insert into course values ('c001','J2SE','t002');
insert into course values ('c002','Java Web','t002');
insert into course values ('c003','SSH','t001');
insert into course values ('c004','Oracle','t001');
insert into course values ('c005','SQL SERVER 2023','t003');
insert into course values ('c006','C#','t003');
insert into course values ('c007','JavaScript','t002');
insert into course values ('c008','DIV+CSS','t001');
insert into course values ('c009','PHP','t003');
insert into course values ('c010','EJB3.0','t002');
commit;
insert into sc values ('s001','c001',78.9);
insert into sc values ('s002','c001',80.9);
insert into sc values ('s003','c001',81.9);
insert into sc values ('s004','c001',60.9);
insert into sc values ('s001','c002',82.9);
insert into sc values ('s002','c002',72.9);
insert into sc values ('s003','c002',81.9);
insert into sc values ('s001','c003','59');
commit;
4、 查询每门课程被选修的学生数。
SELECT cno,count(sno)
FROM sc
GROUP BY cno
Order by cno;
5、 查询出只选修了一门课程的所有学生的学号和姓名。
SELECT sc.sno,student.sname
FROM sc,student
Where sc.sno= student.sno
GROUP BY sc.sno,student.sname HAVING count(cno)=1 ;
6、查询男生、女生人数。
7、查询姓“张”的学生名单。
8、查询同名同姓学生名单,并记录同名人数。
9、1981 年出生的学生名单。
10、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列。
11、查询平均成绩大于85 的所有学生的学号、姓名和平均成绩。
12、记录每门课程的学生选修人数(超过10 人的课程才记录)。规定输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
13、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分。
14、按各科平均成绩从低到高和及格率的百分数从高到低顺序。
15、记录列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]。
实验五
实验名称:PL/SQL编程
实验学时:4
实验目的:
1) 纯熟掌握PL/SQL程序设计的基本知识。
2) 纯熟掌握PL/SQL中控制结构的使用。具体涉及选择结构语句(IF语句和CASE语句),循环结构(四种循环结构)。
3) 纯熟使用PL/SQL中系统函数。
4) 掌握PL/SQL中异常解决语句的使用
5) 掌握PL/SQL中SELECT语句和DML语句的综合运用。
实验内容及环节
1、条件语句IF的语法及使用
IF <条件表达式> THEN
<执行语句> …… <执行语句n>
[ELSIF <条件表达式> THEN
<执行语句> …… <执行语句n>
……
ELSE
<执行语句>]
END IF;
例1:声明一个整型变量Num,使用IF语句判断Num变量是正数、负数或0。
SET ServerOutput ON;
DECLARE
Num INTEGER := -11;
BEGIN
IF Num < 0 THEN
dbms_output.put_line('负数');
ELSIF Num >0 THEN
dbms_output.put_line('正数');
ELSE
dbms_output.put_line('0');
END IF;
END;
2、分支语句CASE 语法:
CASE <变量>
WHEN <表达式1> THEN 值1
WHEN <表达式2> THEN 值2
……
WHEN <表达式n> THEN 值n
ELSE 值n + 1
END;
例2、使用CASE语句根据给定的整数输出相应的星期值:
SET ServerOutput ON;
DECLARE
varDAY INTEGER := 3;
Result VARCHAR2(20);
BEGIN
Result := CASE varDAY
WHEN 1 THEN '星期一'
WHEN 2 THEN '星期二'
WHEN 3 THEN '星期三'
WHEN 4 THEN '星期四'
WHEN 5 THEN '星期五'
WHEN 6 THEN '星期六'
展开阅读全文