`
java-mans
  • 浏览: 11416915 次
文章分类
社区版块
存档分类
最新评论

oracle测试小例子[你会几个?]

 
阅读更多
1.创建一个名称为test的用户,并授权其连接数据库和创建表的权限,同时授权访问另一个用户scott的表emp的权限
create user test identified by 111;
grant connect to test;
grant create table to test;
grant select on scott.emp to test; 


2. 针对scott用户emp表编写语句,只有当最低工资少于2000而且最高工资超过4000时,才显示部门ID以及该部门的最低工资和最高工资

select deptno,min,max from(select min(sal) min,max(sal) max,deptno from emp group by deptno)
where min<2000 and max >4000;


3. 公司决定发年终奖,根据职员的所在部门来计算,如果部门为10的,奖金为2000,部门为20的,奖金为1500,部门为30的奖金为1000,其他的奖金为500。编写一个过程来完成

create or replace procedure pro_addAward
as
begin
update emp set comm=0 where comm is null;
update emp set comm=comm+decode(deptno,10,2000,20,1500,30,1000);
end;


4. 编写代码,提示用户输入姓名。代码应检查用户输入的姓名的长度,如果长度小于2,则代码应引发异常并显示消息“请输入正确的姓名”。否则应显示消息“欢迎”。
create or replace function fun_login
(

--参数不能指定长度!!!!!!!!!
userName varchar2
)
return varchar2--必须有return
as
begin
if(length(userName)>2) then--必须有then
return '欢迎';
else
raise_application_error(-20000,'用户名输入不正确!');--必须有第一个参数
end if;
end;

declare
name varchar2(50):='&name';
begin
Dbms_output.put_line(fun_login(name));--调用函数
end;

5.编写代码,提示用户输入要查看的哪个表的记录,如果用户输入“E”,则显示emp表中empno,ename,job和sal列的值;如果用户输入“D”,则显示dept表中的

deptno,dname和loc列的值
create or replace procedure pro_showInfo
(
word varchar2,
cur_result out sys_refcursor
)
as
v_sql varchar2(500);
begin
case word
when 'E' then
open cur_result for select empno,ename,sal,job from emp;
when 'D' then
open cur_result for select deptno,dname,loc from dept;
else
select * from emp;
end case;
end;


declare
Type emp_record IS RECORD
(
empno emp.empno%type,
ename emp.ename%type,
sal emp.sal%type,
job emp.job%type
);
Type dept_record IS RECORD
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
cur_word sys_refcursor;
dept_rec dept_record;
emp_rec emp_record;
word varchar2(10):='&word';
begin
pro_showInfo(word,cur_word);
case word
when 'E' then
Dbms_output.put_line('empno          ename         sal          job');
loop
fetch cur_word into emp_rec;
exit when cur_word%notfound;
Dbms_output.put_line(emp_rec.empno||'          '||emp_rec.ename||'          '||emp_rec.sal||'           '||emp_rec.job);
end loop;
when 'D' then
Dbms_output.put_line('deptno          dname          loc');
loop
fetch cur_word into dept_rec;
exit when cur_word%notfound;
Dbms_output.put_line(dept_rec.deptno||'          '||dept_rec.dname||'          '||dept_rec.loc);
end loop;
else
Dbms_output.put_line('不存在!');
end case;
close cur_word;
end;

6.编写一个程序包,包有两个过程和一个函数,第一个过程根据职员编号打印职员姓名,第二个过程根据职员编号打印职员薪水,函数根据职员编号返回职员的入职时间。(此处只完成:第一个过程根据职员编号打印职员姓名,其它例似)

create or replace package emp_package
is
procedure proc_printNamebyEmpNo
(
param_empNo number
);--分号不能掉!!!
end emp_package;

create or replace package body emp_package
as
procedure proc_printNamebyEmpNo
(
param_empNo number
)
as--这里不是;了。
ename emp.ename%type;
empno emp.empno%type;
begin
select a.ename into ename from emp a where a.empno=param_empno;
Dbms_output.put_line('编号为:'||param_empno||'的员工姓名为:'||ename);
exception--捕获异常
when no_data_found then
Dbms_output.put_line('不存在编号为'||param_empno||'的员工!');
end;
end emp_package;

declare
empno varchar2(50):='&empno';
begin
emp_package.proc_printNamebyEmpNo(empno);--调用函数
end;

7.创建一个触发器,无论用户插入新记录,还是修改EMP表的job列,都将用户指定的job列的值转换成大写

create or replace trigger tr_upper_job
before insert or update on emp
for each row
begin
:NEW.job:= upper(:NEW.job);--此处用select into 和set会出错。直接赋值更为简单。
end;


8.将用户scott的所有对象导入到用户test下。

exp scott/111@ORCL file=d:\daochu.dmp full=y
imp scce/111@ORCL file=d:\daochu.dmp fromuser=scott touser=scce ignore=y constraints=y grants=y



分享到:
评论

相关推荐

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    读者可以学习到以下几个方面的技巧:  掌握Oracle数据库中独有的SQL强大特征;  读取并理解SQL执行计划;  快速分析并改进表现欠佳的SQL;  通过提示及配置文件等来控制执行计划;  在程序中优化查询而无需改动...

    Loadrunner-oracle连接/修改update/select用例

    //设定保存列中的某个数据到row中,第二个参数为第几列,第三个参数为第几行(只能保存一个值),最后一个参数就是你想要保存到的parameter名称 lrd_ora8_save_col(OraStm1, 1, 1, 0, "result"); //这个遍历刚才查询...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    4或者sybase, sybase数据库,不区分大小写(暂未测试) -url 数据库连接的url.默认空字符串 如果有url参数,则-i-p-s-dn参数全无效。 如果没有url参数,则必须提供-i-p-s参数,程序里面好拼凑url 例如: jdbc:sql...

    oracle恢复工具-FY_Recover_Data

    从上面的DESC命令可以看出表的Segment Header是(4,5235), 而新的Data Object ID是9977, 老的Data Object ID我们可以从Segment Header的后面一个数据块中得到, 如果这个表有几个Free List Group, 则可能还要再后面几...

    测试培训教材

    就测试过程本身而言,应该包含以s下几个阶段。  -测试需求的分析和确定。  -测试计划。  -测试设计。  -测试执行。  -测试记录和缺陷跟踪。  -回归测试。  -测试总结和报告。 一个好的测试管理工具...

    数据库工具sysbench安装教程和性能测试例子

    sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。关于这个项目的详细介绍请看:http://sysbench.sourceforge.net。 它主要包括以下几种方式的测试: 1、...

    陈焕生:深入理解Oracle的并行执行(五)

    本节举几个典型例子。 在’数据倾斜对不同分发方式的影响’小节中,我们新建一个表lineorder_skew把lineorder的lo_custkey列90%的值修改为-1。因为lo_custkey是均匀分布的,我们可以通过对lo_custkey列求模,也可以...

    记一次Oracle数据恢复过程

    事情的起因是,一个应用升级后,某一个操作导致一个表的几个列全部被更新为同一值(忍不住又要唠叨测试的重要性)。这样的错误居然出现在应用代码中,显然是重大的BUG。那个是罪魁祸首的SQL,UPDATE语句,其WHERE...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    通过我们已经学过的知识,你可以编写一个最简单的程序输出一个也许是程序世界中最有名的词语: &lt;? echo "Hello World!"; ?&gt; First PHP page &lt;? // Single line C++ style comment /* printing the message ...

    Toad 使用快速入门

    a) 打开存储过程编写器的几个途径: 单击总菜单栏上的第三个按钮:   点击Database - &gt; Procedure Editor , 可以通过Schema browser来调用 b) 一些特点和优点: 1. 强大的自定义设置:从保留字的显示方式...

    经典全面的SQL语句大全

     注:使用运算词的几个查询结果行必须是一致的。  12、说明:使用外连接  A、left outer join:  左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, ...

    (3.0版本)自己写的struts2+hibernate+spring实例

    还有我写这个例子时应该注意的一些东西.外加一些关于struts2和hibernate的技巧心得整理. 说一下这次3.0更新的内容.可能大家在我的博客里面已经看到了相关的日志.我懒.下面就把那个日志抽出来当说明了啊.有兴趣的就...

    smartupload文件上传

    经过几天的学习,自己整理出来了smartupload,文件上传的例子,因此在此给大家共享一下,对于文件上传有问题的java开发者可以学学。该项目包含文件上传,例子...同时里面包含一个是否与oracle数据库连通的一个测试类。

    asp.net知识库

    与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const...

    SQL性能优化

    (注:如果对表进行了统计分析,ORACLE会自动先进小表的链接,再进行大表的链接)  对条件字段的一些优化  采用函数处理的字段不能利用索引,如: substr(hbs_bh,1,4)=’5400’,优化处理:hbs_bh like ‘5400%...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

Global site tag (gtag.js) - Google Analytics