ex11游标与存储过程答案

合集下载

oracle模拟试题答案汇总

oracle模拟试题答案汇总

第1题,选择题(2分):ORACLE中,游标可以分为三类,下面不是Oracle游标的是(1 )。

(1) 系统游标(2) 显式游标(3) 隐式游标⑷REF游标CURSOR 第2题,选择题(2分):PL/SQL块中定义了一个带参数的游标emp_cursor(d num NUMBER) ISSELECT sal,comm FROM emp WHERE dept no=d num;那么正确打开此游标的语句是(1)(1) OPEN emp_cursor(20);(2) OPEN emp_cursor FOR 20;(3) OPEN emp_cursor USING 20;(4) FOR rmp_rec IN emp_cursor[20] LOOP ... END LOOP;第3题,选择题(2分):有关ORACLE索引说法正确的是(A )(1) 索引的数据和表的数据分开存储,但索引组织表除外(2) 所有索引中的数据是顺序排序(3) 分区表的索引必须统一存储(4) 只能对分区表的索引进行分区第4题,选择题(2分):下列有关包的使用说法错误的是(A)(1) 必须先创建包头,然后创建包体(2) 在不同的包内模块可以重名(3) 包的私有过程不能被外部程序调用(4) 包体中的全局过程和函数必须在包第5题,选择题(2分):以下定义的哪个变量是非法的?( A)(1) var_ab nu mber default:=1; var_ab nu mber default 1;(2) var_ab nu mber not n ull :='0';(3) var_ab nu mber;(4) var_ab nu mber:=3;第6题,选择题(2分):PL/SQL块中不能直接使用的SQL命令是(A)(1) drop(2) in sert(3) update(4) select第7题,选择题(2分):下列有关函数的特点说法错误的是(1)(1) 函数的调用应使用EXECUTE命令(2) 函数必须定义返回类型(3) 函数参数的类型可以是OUT(4) 在函数体内可以多次使用RETURN语句第8题,选择题(2分):函数to_char(to_date('65-10-21','yy-mm-dd'),'yyyy-mm-dd') 的返回值是(1)。

数据库视图,索引,序列,触发器游标,存储过程相关的面试题和笔试题

数据库视图,索引,序列,触发器游标,存储过程相关的面试题和笔试题

数据库视图,索引,序列,触发器游标,存储过程相关的面试题和笔
试题
数据库视图,索引,序列,触发器游标,存储过程相关的面试题和笔试题
问题:数据库视图,索引,序列,触发器游标,存储过程相关的面试题和笔试题回答:
1.在SQL数据库中,关于视图的说法错误的是:()
A 用户可以用SQL语言对视图操作
B 视图是从一个或多个基本表导出的表,用户不可以在视图上再定义视图
C 面向用户的模式对应于视图和部分基本表
D 视图并不对应于存储在数据库中的文件,因此视图实际是一个“虚表”
1. 请回答,视图是什么?
2. 请回答,索引是什么?
3. 如果数据数量比较大,数据库如何进行优化?
4. 请回答,游标有什么作用?如何知道游标已经到了最后?
5. 请回答,触发器是什么?
6. 请写一个创建insert , update触发器的例子?
7. 请写一个创建delete 触发器的例子?
8. 请回答,存储过程是什么,他有什么优点?。

oracle11g游标及触发器相关知识

oracle11g游标及触发器相关知识

oracle11g 游标:1. 当在PL/SQL中使用SQL语句时,Oracle会为其分配上下文区域,这是一段私有的内存区域,用于暂时保存SQL语句影响到的数据。

游标是指向这段内存区域的指针。

2. Oracle中主要有两种类型的游标:(1) 隐式游标:所有的DML语句和PL/SQL SELECT 语句都有;(2) 显式游标:由开发人员声明和控制。

3. 可以使用的游标属性包括四种:%ROWCOUNT、%FOUND、%NOTFOUND、%ISOPEN,这四种属性对于显式游标和隐式游标都有用,但是含义和使用方法略有不同。

游标在使用属性时,需要以游标名称作为前缀,以表明该属性是哪个游标的,隐式游标没有名称,所以在使用隐式游标时采取了统一的一个名称SQL。

4. 在PL/SQL中的SELECT语句只能且必须取出一行数据,取出多行或者零行都被认为是异常,所以在对多行数据进行操作时,必须使用显式游标来实现。

5. 使用显式游标的步骤:(1)声明游标:CURSOR cursor_name is select_statement;(2)打开游标:OPEN cursor_name;(3)取游标中的数据:FETCH cursor_name INTO variable1,variable2,...;(4)关闭游标:CLOSE cursor_name;6.用变量接收游标中的数据sql> declarev_name emp.ename%TYPE;v_sal emp.sal%TYPE;cursor emp_cursor is select ename,sal from empwhere deptno=10;beginopen emp_cursor;loopfetch emp_cursor into v_name,v_sal;exit when emp_cursor%NOTFOUND;dbms_output.put_line(v_name || ‘的薪水是’ || v_sal);end loop;dbms_output.put_line(‘共取出了’ || emp_cursor%ROWCOUNT || ‘条记录’);close emp_cursor;end;7.通常简单LOOP循环与%NOTFOUND属性配合使用,而WHILE循环与%FOUND属性配合使用。

MySQL数据库技术及应用 课后习题答案 (5)[3页]

MySQL数据库技术及应用 课后习题答案 (5)[3页]

项目5一、选择题1、C2、B3、D4、A5、C6、A7、B8、C9、B10、D二、填空题1、系统变量用户变量局部变量2、BEGIN…END3、DELIMITER4、FOR EEACH ROW5、自动事务手动事务6、START TRANSACTION COMMIT三、判断题1、对2、对3、对4、错5、对6、对四、简答题1、答:存储过程具有如下优点:(1)模块化编程,代码可复用性好。

(2)具有更快的执行速度。

(3)减少网络通信量。

(4)增强系统的安全性。

存储过程与存储函数的区别如下4点:(1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。

(2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。

(3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。

(4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT 语句中直接使用。

2、答:游标的作用:游标提供了一种对SELECT语句结果集进行访问的机制。

可以将游标理解为一个在结果集中可以逐行移动的指针,它指向结果集中的某一行,用户可以用SQL 语句逐一从游标中获取记录,从而有选择地按行进行操作,而不是只能对整个结果集进行操作。

游标的使用主要包括声明游标、打开游标、移动游标指针并从游标结果集中读取数据和关闭游标4个步骤。

3、答:触发器是一种特殊的存储过程,主要用于保证数据的完整性和强制使用业务规则。

触发器具有以下优点:(1)触发器可以实现对数据库中的相关表的级联操作;(2)触发器可以用来定义比CHECK约束更复杂的限制;(3)触发器可以用来定义错误信息;(4)触发器可以用来实现更精细和更复杂的数据操作。

4、答:根据激活触发器时机的不同,MySQL触发器可以分为BEFORE触发器和AFTER 触发器两种类型。

中南大学数据库题库数据库错题

中南大学数据库题库数据库错题

中南大学数据库题库数据库错题SQL Server 中的存储过程具有5种类型。

[参考答案]正确存储过程的输出结果可以传递给一个变量。

[参考答案]正确触发器是可在程序中被调用执行。

[参考答案]错误存储过程使代码具有重用性。

[参考答案]正确触发器不能被调用,它可以自动执行。

[参考答案]正确通过语句ALTER PROCEDURE修改存储过程与删除存储过程然后再新建一个同名存储过程的效果是相同的。

[参考答案]错误触发器主要用于强制复杂的__1__或要求。

参考答案1:业务规则创建存储过程实际是对存储过程进行定义的过程,主要包含存储过程名称、__1__和存储过程的主体部分。

参考答案1:参数存储过程是一种数据库对象,将一组SQL语句和控制流语句的集合以一个存储单元的形式保存在__1__上。

参考答案1:服务器为了保证数据库应用系统正常运行,数据库管理员在日常工作中需要对数据库进行维护。

下列一般不属于数据库管理员日常维护工作的是A 数据内容的一致性维护B 数据库备份与恢复C 数据库安全性维护D 数据库存储空间管理参考答案C执行Unload Form1语句后,窗体Form1消失,但仍在内存中。

[参考答案]错误在SQL Server 2000中,某数据库用户User在此数据库中具有对于表数据的查询和更改权限。

现要收回User对于T表的数据更改权,下述是实现该功能的语句,请补全该语句(__1__)UPDATE ON T FROM User参考答案1:REVOKE某事务从账户A转出资金并向账户B转入资金,此操作要么全做,要么全不做。

为了保证该操作的完整,需要利用到事务性质中的(__1__)性.参考答案1:原子事务是由一系列操作组成的,事务的执行表现为事务中各个操作的执行。

每个事务应具有结束操作。

当一个事务需要终止并取消所有已执行的数据修改时应执行的语句是(__1__)参考答案1:ROLLBACK在窗体上画一个命令按钮,名称为Command1。

Oracle笔试题库附参考答案

Oracle笔试题库附参考答案

Oracle笔试题库附参考答案1.下列不属于ORACLE的逻辑结构的是(C)1. 区2. 段3. 数据⽂件4. 表空间2. 下⾯哪个⽤户不是ORACLE缺省安装后就存在的⽤户(A)A . SYSDBAB. SYSTEMC. SCOTTD. SYS3 下⾯哪个操作会导致⽤户连接到ORACLE数据库,但不能创建表(A)1. 授予了CONNECT的⾓⾊,但没有授予RESOURCE的⾓⾊2. 没有授予⽤户系统管理员的⾓⾊3. 数据库实例没有启动4. 数据库监听没有启动1. ( )函数通常⽤来计算累计排名,移动平均数和报表聚合。

A . 汇总B. 分析C 分组、D 单⾏1. 带有(B)字句的SELECT语句可以在表的⼀⾏或多⾏放置排他锁。

A . FOR INSERTB. FOR UPDATEC. FOR DELETED. FOR REFRESH1. 在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary⽤户⽅案中,下⾯哪条语句为数据库中的所有⽤户创建CUSTOMER表的同义词(B)。

1. CREATE PUBLIC SYNONYM cust ON mary.customer;2. CREATE PUBLIC SYNONYM cust FOR mary.customer;3. CREATE SYNONYM cust ON mary.customer FOR PUBLIC;4. 不能创建CUSTOMER的公⽤同义词。

5.7. 在Oracle中,当FETCH语句从游标获得数据时,下⾯叙述正确的是(C)。

1. 游标打开2. 游标关闭3. 当前记录的数据加载到变量中4. 创建变量保存当前记录的数据8. 在Oracle中,下⾯关于函数描述正确的是(AD)。

1. SYSDATE函数返回Oracle服务器的⽇期和时间2. ROUND数字函数按四舍五⼊原则返回指定⼗进制数最靠近的整数3. ADD_MONTHS⽇期函数返回指定两个⽉份天数的和4. SUBSTR函数从字符串指定的位置返回指定长度的⼦串9. 阅读下⾯的PL/SQL程序块:BEGININSERT INTO employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fred’);SAVEPOINT save_a;INSERT INTO employee(salary,last_name,first_name)VALUES(40000,’Woo’,'David’);SAVEPOINT save_b;DELETE FROM employee WHERE dept_no=10;SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name)VALUES(25000,’Lee’,'Bert’);ROLLBACK TO SAVEPOINT save_c;VALUES(32000,’Chung’,'Mike’);ROLLBACK TO SAVEPOINT save_b;COMMIT;END;运⾏上⾯的程序,哪两个更改永久保存到数据库(CD)。

ORCALE11G 期末试题及答案A

ORCALE11G 期末试题及答案A

学年第 一 学期期末考试试题(卷)
专业: 班级: 姓名: 学号:
装 订 线 装 订 线 以 内 不 准 作 任 何 标 记 装 订 线
学院
课程考试参考答案与评分标准
学年第一学期
课程名称:ORCALE 考试性质:考查试卷类型:A
考试班级:计科考试方法:命题教师:
一、选择(每题2分,共30分)
DBBBA,DCCBD,CBCAB
二、判断(每题2分,共20分)
YNNYY,YYNNY
三:简答题(每题5分,共10分)
1、脏缓存块、空闲缓存块、命中缓存块
2、自动生成数据
强制复杂的完整性约束
自定义复杂的安全权限
提供审计和日志记录
启动复杂的业务逻辑
四、读程题(每题10分,共20分)
1、12,9,6,3
2、1的平方是1;2的平方是4;3的平方是9;4的平方是16;5的平方是25;五:(每题10分,共20分)
1.Create procedure sp_proc is
Begin
Dbms_output.putline(”hello world”);
End;
/
2、Create or replace trigger tg_md before
Update
On emp
For each row
Begin
Update DEPT
Set deptno=:new.deptno where deptno=:old.deptno;
End;。

oracle11试题及答案

oracle11试题及答案

oracle11试题及答案1. Oracle数据库的默认端口号是多少?- A. 1521- B. 1433- C. 3306- D. 5432答案: A2. 以下哪个不是Oracle数据库的组成部分?- A. 数据库实例- B. 数据文件- C. 控制文件- D. 索引文件答案: D3. 在Oracle中,哪个命令用于查看当前用户?- A. `SELECT USER FROM DUAL;`- B. `SELECT CURRENT_USER FROM DUAL;`- C. `SELECT SESSION_USER FROM DUAL;`- D. `SELECT USER_ID FROM DUAL;`答案: B4. Oracle数据库中,用于创建表的SQL语句是什么? - A. `CREATE DATABASE TABLE;`- B. `CREATE TABLE;`- C. `CREATE DATABASE;`- D. `CREATE TABLES;`答案: B5. 在Oracle中,如何添加新列到已存在的表中?- A. `ALTER TABLE table_name ADD column_name datatype;` - B. `ADD COLUMN table_name column_name datatype;`- C. `CREATE COLUMN table_name column_name datatype;`- D. `INSERT COLUMN table_name column_name datatype;` 答案: A6. Oracle数据库中,用于删除表的SQL命令是什么?- A. `DELETE TABLE table_name;`- B. `REMOVE TABLE table_name;`- C. `DROP TABLE table_name;`- D. `UNLOAD TABLE table_name;`答案: C7. 在Oracle数据库中,如何给表添加主键约束?- A. `ALTER TABLE table_name ADD CONSTRAINTconstraint_name PRIMARY KEY (column_name);`- B. `ALTER TABLE table_name PRIMARY KEY (column_name);` - C. `ADD PRIMARY KEY TO table_name (column_name);`- D. `SET PRIMARY KEY ON table_name (column_name);` 答案: A8. Oracle数据库中,用于查询数据库中所有表的SQL命令是什么? - A. `SELECT * FROM ALL_TABLES;`- B. `SELECT * FROM USER_TABLES;`- C. `SELECT * FROM TABLES;`- D. `SELECT * FROM ALL_TABLE;`答案: B9. 在Oracle中,如何查看表的结构?- A. `DESCRIBE table_name;`- B. `EXPLAIN table_name;`- C. `SHOW TABLE table_name;`- D. `SELECT * FROM table_name;`答案: A10. Oracle数据库中,用于更新表中数据的SQL命令是什么?- A. `UPDATE table_name SET column_name = 'value' WHERE condition;`- B. `CHANGE table_name SET column_name = 'value' WHERE condition;`- C. `MODIFY table_name SET column_name = 'value' WHERE condition;`- D. `ALTER TABLE table_name SET column_name = 'value' WHERE condition;`答案: A。

vfp考试题及答案

vfp考试题及答案

vfp考试题及答案一、单项选择题(每题2分,共20分)1. 在Visual FoxPro中,以下哪个命令用于打开表单文件?A. OPEN DATABASEB. OPEN FORMC. OPEN TABLED. OPEN REPORT答案:B2. Visual FoxPro中,以下哪个函数用于计算字符串的长度?A. LENB. TYPEC. SPACED. AT答案:A3. 在Visual FoxPro中,以下哪个命令用于关闭数据库?A. CLOSE DATABASEB. CLOSE TABLEC. CLOSE FORMD. CLOSE ALL答案:A4. Visual FoxPro中,以下哪个命令用于创建一个新的数据库?A. CREATE DATABASEB. CREATE TABLEC. CREATE FORMD. CREATE REPORT答案:A5. 在Visual FoxPro中,以下哪个命令用于删除一个表?A. DELETE TABLEB. DROP TABLEC. REMOVE TABLED. CLEAR TABLE答案:B6. Visual FoxPro中,以下哪个函数用于将字符串转换为数值?A. STRB. NUMC. VALD. CTOD答案:C7. 在Visual FoxPro中,以下哪个命令用于设置当前工作目录?A. SET DIRECTORYB. SET PATHC. SET WORKING DIRECTORYD. SET CURRENT DIRECTORY答案:D8. Visual FoxPro中,以下哪个命令用于设置表单的标题?A. SET TITLEB. SET FORM TITLEC. FORM SET TITLED. FORM TITLE答案:A9. 在Visual FoxPro中,以下哪个命令用于查看当前数据库的结构?A. SHOW DATABASEB. DISPLAY DATABASEC. BROWSED. LIST答案:A10. Visual FoxPro中,以下哪个命令用于执行SQL查询?A. SELECTB. QUERYC. SQLD. EXECUTE SQL答案:D二、填空题(每题2分,共20分)1. 在Visual FoxPro中,使用________命令可以查看当前数据库中的表。

存储过程游标的详解

存储过程游标的详解

存储过程游标的详解
存储过程游标是数据库中最重要的数据管理功能之一,可以被用来操作数据库中的结果集,帮助用户建立高效的程序。

它的名字源自于一种古老的计算机输入方式,也就是光标,它有助于用户建立一个特定的存储过程,用来提高用户程序的效率。

把游标想象成一台虚拟的光标,它可以被用来在每行数据上游走。

存储过程游标是用来管理结果集和数据,它可以用来定位、更新、或删除行,它可以被用来执行批处理,也可以实现数据库操作,帮助用户更有效地操作数据。

首先,用户必须使用存储过程游标语句,定义一个或多个结果集,其次,用户可以在存储过程中使用多条游标控制语句,控制存储过程游标的行为,包括定义、定位、遍历、提取和修改,用户还可以定义和使用可滚动的存储过程游标来实现数据的更新和检索。

存储过程游标有助于用户建立更高效的存储过程,它可以减少大量的计算工作,提高存储过程执行效率,而且可以实现特定的逻辑,人们可以借助存储过程游标来更好地组织存储过程程序。

但是,使用存储过程游标也有缺点,比如存储过程游标可能会有数据库性能问题,也可能会导致内存占用和磁盘IO消耗大量资源,因此,存储过程游
标在设计程序时应当谨慎使用,考虑到两者的利弊之后再做出决定。

总之,存储过程游标是数据库中一项重要的功能,它有助于操作数据库中的结果集,帮助用户建立高效的程序,在编写程序时应当谨慎考虑到它的利弊,从而利用它的优势,减少它的缺点。

Oracle数据库 习题答案.jsp

Oracle数据库    习题答案.jsp
第七章练习
ex:使用游标与异常处理,完成下列功能. ex:使用游标与异常处理,完成下列功能. 与异常处理 查询dept表中的所有部门号与部门名,并输出. 查询dept表中的所有部门号与部门名,并输出. dept表中的所有部门号与部门名 将dept表中部门号为50的部门地址loc改为:上 dept表中部门号为50的部门地址loc改为 表中部门号为50的部门地址loc改为: 海. 如果部门号不合法,则给出错误提示. 如果部门号不合法,则给出错误提示. 如果出现其他错误,给出错误代码和错误文本. 如果出现其他错误,给出错误代码和错误文本.
第三章作业
编写SQL语句完成下列功能,并要求写出第1 编写SQL语句完成下列功能,并要求写出第1,3,7题 SQL语句完成下列功能 的 查询结果. 查询结果. 查询10号部门员工的员工号以及其领导的员工号, 10号部门员工的员工号以及其领导的员工号 1 查询10号部门员工的员工号以及其领导的员工号, 并 以别名"领导员工号"显示列名. 以别名"领导员工号"显示列名. select empno,mgr 领导员工号 from emp where deptno=10; 查询emp表中所有的员工信息, emp表中所有的员工信息 2 查询emp表中所有的员工信息,并要求按照部门号升 序排序,相同部门按照工资降序排序. 序排序,相同部门按照工资降序排序. HANMENG 2009 select * from emp order by deptno,sal desc;
HANMENG 2009
编写sql语句完成下列功能. 编写 语句完成下列功能. 语句完成下列功能 查询班级名为' 班 的所有学生的学号, 查询班级名为'1班'的所有学生的学号,姓 名. select sno,sname from student a,class b where a.sclass=o and cname='1班'; 班 查询学号为' 查询学号为'20070001'的学生的姓名和所在班 的学生的姓名和所在班 的班名以及所在系的系名. 的班名以及所在系的系名. select sname,cname,dname from student a,class b,department c where a.sclass=o and b.cdept=c.dno and a.sno='20070001';

oracle存储过程和游标的使用

oracle存储过程和游标的使用

oracle存储过程和游标的使⽤oracle存储过程和游标的使⽤(2011-04-19 14:52:47)游标:⽤来查询数据库,获取记录集合(结果集)的指针,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标。

要在程序中使⽤游标,必须⾸先声明游标分类:静态游标:分为显式游标和隐式游标。

REF游标:是⼀种引⽤类型,类似于指针。

显式游标:CURSOR 游标名 ( 参数 ) [返回值类型] ISSelect 语句⽣命周期:在⼤多数时候我们在设计程序的时候都遵循下⾯的步骤: 1、打开游标 open cs1; 2、开始循环 while cs1%found loop | for column_name in .. LOOP 3、从游标中取值 fetch .. into.. | 4、检查那⼀⾏被返回 5、处理 6、关闭循环 end loop; 7、关闭游标 if cs1&isopen then close cs1;选项:参数和返回类型set serveroutput ondeclarecursor emp_cur ( p_deptid in number) isselect * from employees where department_id = p_deptid;l_emp employees%rowtype;begindbms_output.put_line('Getting employees from department 30');open emp_cur(30);loopfetch emp_cur into l_emp;exit when emp_cur%notfound;dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');dbms_output.put_line(l_emp.first_name || ' ' || l_st_name);end loop;close emp_cur;dbms_output.put_line('Getting employees from department 90');open emp_cur(90);loopfetch emp_cur into l_emp;exit when emp_cur%notfound;dbms_output.put_line('Employee id '|| l_emp.employee_id || ' is ');dbms_output.put_line(l_emp.first_name || ' ' || l_st_name);end loop;close emp_cur;end;/隐式游标:不⽤明确建⽴游标变量,分两种:1.在PL/SQL中使⽤DML语⾔,使⽤ORACLE提供的名为SQL的隐⽰游标2.CURSOR FOR LOOP,⽤于for loop 语句1举例:declarebeginupdate departments set department_name=department_name;--where 1=2;dbms_output.put_line('update '|| sql%rowcount ||' records');end;/2举例:declarebeginfor my_dept_rec in ( select department_name, department_id from departments)loopdbms_output.put_line(my_dept_rec.department_id || ' : ' || my_dept_rec.department_name); end loop;end;/3举例:单独selectdeclarel_empno emp.EMPLOYEE_ID%type;-- l_ename emp.ename%type;beginselect EMPLOYEE_IDinto l_empnofrom emp;--where rownum =1;dbms_output.put_line(l_empno);end;/使⽤INTO获取值,只能返回⼀⾏。

数据库系统原理模拟习题+答案

数据库系统原理模拟习题+答案

数据库系统原理模拟习题+答案一、单选题(共100题,每题1分,共100分)1.下列关于游标的说法中,错误的是A、在使用游标之前,必须先声明(定义)它B、在定义游标之后,必须打开该游标,才能使用C、在实际应用中,一个游标可以被多次打开D、句柄必须在游标之前定义,否则系统会出现错误消息正确答案:D2.引起数据不一致的根源是A、数据冗余B、并发控制C、故障恢复D、数据集成正确答案:A3.【】主要是指某些特定应用要求的数据存取时间限制。

A、数据的完整性B、数据的安全保密性C、数据恢复D、响应时间正确答案:D4.聚类的目的是A、使对象之间的距离尽可能大B、使属于同一类别的对象之间的距离尽可能小,而不同类别的对象间的距离尽可能大C、使属于同一类别的对象之间的距离尽可能大,而不同类别的对象间的距离尽可能小D、使对象之间的距离尽可能小正确答案:B5.属于行为设计阶段的是A、逻辑设计B、概念设计C、物理设计D、功能设计正确答案:D6.下列关于SQL的说法中,错误的是A、SQL是 SQL Server 2000专有的语言B、掌握SQL可以帮助用户与几乎所有的关系数据库进行交互C、SQL简单易学D、SQL是一种强有力的语言正确答案:A7.在关系模式R(U,F)中,R中任何非主属性对候选键完全函数依赖是RE3NF的A、充分必要条件B、充分条件C、必要条件D、既不充分也不必要条件正确答案:C8.下列关于索引的说法中,错误的是A、索引文件需要占用磁盘空间B、创建的索引越多越好C、DBMS会将一个表的所有索引保存在同一个索引文件中D、创建索引能够提高数据文件的访问效率正确答案:B9.在创建存储过程时,常用的条件判断语句有A、LOOP语句B、REPEAT语句C、WHILE语句D、CASE语句正确答案:D10.下列属于列存储数据库的是A、RedisB、CouchDBC、MongoDBD、Cassandra正确答案:D11.在数据仓库技中,【】是数据汇总/聚集工具。

oracle游标用法 -回复

oracle游标用法 -回复

oracle游标用法-回复什么是Oracle游标?Oracle游标是一个数据库对象,用于在PL/SQL代码中对查询结果集进行处理。

游标可以被视为一个指针,允许我们在结果集中依次访问每一行数据,以便进行进一步的处理。

通过使用游标,我们可以在程序中对查询结果进行遍历、筛选和聚合等操作。

Oracle游标的用法使用游标的基本步骤如下:1. 声明游标:在PL/SQL代码块中使用DECLARE关键字声明游标。

2. 打开游标:使用OPEN语句打开游标,从而开始遍历查询结果集。

3. 读取游标:使用FETCH语句从游标中读取返回的每一行数据。

4. 处理游标结果:可以根据需要对每一行数据进行各种操作,如打印、计算、修改等。

5. 关闭游标:在处理完所有结果后,使用CLOSE语句关闭游标。

下面我们将逐步讲解如何使用Oracle游标。

1. 声明游标在PL/SQL代码块中,使用DECLARE关键字来声明游标。

游标的声明包括游标名、数据类型和返回的结果集。

以下是一个Oracle游标的声明示例:DECLARECURSOR cursor_name IS select_statement;在这个示例中,我们使用"CURSOR"关键字来声明一个游标,并为游标指定一个名称。

"select_statement"表示一个SELECT语句,用于定义游标返回的结果集。

2. 打开游标在声明游标之后,我们需要使用OPEN语句打开游标,从而开始遍历查询结果集。

以下是一个打开游标的示例:OPEN cursor_name;在这个示例中,“cursor_name”是我们在声明游标时指定的游标名称。

3. 读取游标一旦游标打开,我们可以使用FETCH语句读取游标返回的每一行数据。

FETCH语句可以将游标的结果集中的一行数据赋值给一个或多个变量。

以下是一个读取游标的示例:FETCH cursor_name INTO variable1, variable2;在这个示例中,我们使用FETCH语句将游标返回的一行数据赋值给"variable1"和"variable2"这两个变量。

oracle课后习题答案

oracle课后习题答案

oracle课后习题答案Oracle课后习题答案在学习Oracle数据库时,完成课后习题是巩固知识的重要方式。

本文将为大家提供一些常见Oracle课后习题的答案,帮助读者更好地理解和应用数据库知识。

一、基本概念题1. 什么是数据库?答:数据库是一个组织和存储数据的系统。

它是一个结构化的集合,用于存储、管理和操纵数据,并提供对数据的安全性和完整性的保证。

2. 什么是表?答:表是数据库中的一个基本组成部分,用于存储数据。

它由行和列组成,行表示记录,列表示记录中的字段。

3. 什么是SQL?答:SQL(Structured Query Language)是一种用于访问和管理关系型数据库的语言。

它可以用于查询、插入、更新和删除数据,以及创建和管理数据库对象。

二、SQL查询题1. 查询员工表中所有员工的姓名和工资。

答:SELECT 姓名, 工资 FROM 员工表;2. 查询订单表中订单金额大于1000的订单号和金额。

答:SELECT 订单号, 订单金额 FROM 订单表 WHERE 订单金额 > 1000;3. 查询客户表中所有客户的姓名和地址,按照地址降序排列。

答:SELECT 姓名, 地址 FROM 客户表 ORDER BY 地址 DESC;三、SQL插入题1. 向员工表中插入一条记录,姓名为"张三",工资为5000。

答:INSERT INTO 员工表 (姓名, 工资) VALUES ('张三', 5000);2. 向订单表中插入一条记录,订单号为"2021001",金额为2000。

答:INSERT INTO 订单表 (订单号, 订单金额) VALUES ('2021001', 2000);四、SQL更新题1. 将员工表中工资低于3000的员工工资增加1000。

答:UPDATE 员工表 SET 工资 = 工资 + 1000 WHERE 工资 < 3000;2. 将客户表中地址为"北京市"的客户地址改为"上海市"。

程序员面试模拟试卷9(题后含答案及解析)

程序员面试模拟试卷9(题后含答案及解析)

程序员面试模拟试卷9(题后含答案及解析) 题型有:1.1.存储过程和函数的区别正确答案:基本上一样,一个显著的不同之处就是函数必须有返回值2.事务是什么?正确答案:数据库事务是指作为一个逻辑工作单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务。

事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。

通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

3.游标的作用?如何知道游标已经到了最后?正确答案:游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。

4.触发器分为事前触发和事后触发,这两种触发有和区别。

语句级触发和行级触发有何区别。

正确答案:事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。

通常事前触发器可以获取事件之前和新的字段值。

语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

5.与ASP相比,主要有哪些进步?正确答案:和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。

ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

首先.net是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等.封装性使得代码逻辑清晰,易于管理,并且应用到上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。

并且C#和C++、Java一样提供了完善的调试/纠错体系。

6.数据库的优化设计?正确答案:从范式优化、索引优化、表的优化及查询优化探讨数据库优化设计的方法,并对它们的综合使用进行分析.数据库优化设计时,在逻辑设计阶段,要根据范式优化及表优化中的要求设计数据库逻辑结构,对两者的利弊进行权衡,选出折衷的方案,既可以避免不一致性和数据异常现象,又不影响整体的性能;在数据库物理设计阶段,要根据索引优化中的要求在有关属性或属性的组合上建立索引,以优化数据库物理结构;在数据库查询阶段,采用在条件子句中使用索引,嵌套查询,迟早执行选择操作,迟早消除不满足条件的记录,分组计数和避免困难的正规表达式6种优化策略,可大大提高查询效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验十一游标与存储过程(1)创建游标,逐行显示表Customer.的记录,并用WHILE结构来测试@@Fetch_Status的返回值。

输出格式如下:'客户编号'+'-----'+'客户名称'+'----'+'客户地址'+'-----'+'客户电话'+'------'+'客户邮编'+'------'DECLARE cur_cust SCROLL cursor FORSELECT*FROM customerDECLARE @p_CustId char(5)DECLARE @p_CustName char(20)DECLARE @p_address char(40)DECLARE @p_Tel char(10)DECLARE @p_Zip char(6)DECLARE @p_All char(100)SELECT @p_All='客户编号'+'------'+'客户名称'+'------'+'客户地址'+'-------------------------------------'+'客户电话'+'-------'+'客户邮编'+'------'PRINT @p_AllOPEN cur_custFETCH cur_cust into @p_CustId,@p_CustName,@p_address,@p_Tel,@p_Zip WHILE(@@fetch_status<>-1)BEGINSELECT @p_All=@p_CustId+' '+@p_CustName+@p_address+@p_Tel+' '+@p_Zipprint @p_AllFETCH cur_cust into @p_CustId,@p_CustName,@p_address,@p_Tel,@p_Zip ENDPRINT'客户数目: '+CONVERT(char(5),@@CURSOR_ROWS)CLOSE cur_custDEALLOCATE cur_cust(2)利用游标修改OrderMaster表中Ordersum的值。

update ordermasterset ordersum=0declare @orderno char(12)declare @total numeric(9,2)declare cur_orderdetail scroll cursor forselect orderno,sum(quantity*price)from orderdetailgroup by ordernoopen cur_orderdetailfetch next from cur_orderdetail into @orderno,@total while(@@fetch_status=0)beginupdate ordermaster set ordersum=@totalwhere orderno=@ordernofetch next from cur_orderdetail into @orderno,@total endclose cur_orderdetaildeallocate cur_orderdetailselect*from ordermaster(3)创建游标,要求:输出所有女业务员的编号、姓名、性别、部门、职务、入职日期工资。

declare @emp_no char(5),@emp_name char(10),@sex char(1),@dept char(4) declare @date_hired datetime,@salary int,@text char(100)declare female_emp_cur cursor forselect employeeno,employeename,sex,department,hiredate,salaryfrom employee where sex='F'select @text='==================女业务员情况列表================='print @textselect @text=' 编号姓名性别部门职务入职日期工资'print @textselect @text='--------------------------------------------------'print @textopen female_emp_curfetch female_emp_cur into@emp_no,@emp_name,@sex,@dept,@date_hired,@salarywhile(@@fetch_status=0)beginselect @text=@emp_no+' '+@emp_name+' '+@sex+' '+@dept+' '+''+convert(char(4),year(@date_hired))+convert(char(2),month(@date_hire d))+' '+convert(char(6),@salary)print @textfetch female_emp_cur into@emp_no,@emp_name,@sex,@dept,@date_hired,@salaryendclose female_emp_curdeallocate female_emp_cur(4)创建存储过程,要求:按表定义中的CHECK约束自动产生员工编号。

create procedure createEmployeeNo(@sYear char(4),@sEmployeeNo char(8) output)asbegindeclare @employeeNo char(8),@num intdeclare @sNum char(3)select @employeeNo=max(employeeNo)from Employeewhere employeeNo like'E'+@sYear+'%'set @num=isnull(convert(int,right(@employeeNo,3)),0)+1if @num<10set @sNum='00'+convert(char(1),@num)elseif @num<100set @sNum='0'+convert(char(2),@num)elseset @sNum=convert(char(3),@num)set @sEmployeeNo='E'+@sYear+@sNumendgodeclare @sEmployeeNo char(8)execute createEmployeeNo'2006',@sEmployeeNo outputselect @sEmployeeNo 员工编号结果:(5)创建存储过程,要求:查找姓“李”的“职员”的员工编号、订单编号、销售金额。

create procedure employee_tot @e_name varchar(10),@e_headship varchar(10)asbegindeclare @emp_no char(10),@order_no char(12),@order_sum char(9) declare @text char(100)declare get_tot cursor forselect employeeno,b.orderno,ordersumfrom employee a,ordermaster bwhere employeename like @e_name and headship=@e_headship and a.employeeno=b.salernoselect @text='员工编号订单编号销售金额'print @textopen get_totfetch get_tot into @emp_no,@order_no,@order_sumwhile(@@fetch_status=0)beginselect @text=@emp_no+' '+@order_no+' '+@order_sumprint @textfetch get_tot into @emp_no,@order_no,@order_sumendclose get_totdeallocate get_totendgoexec employee_tot @e_name='李%', @e_headship='职员'(6)创建存储过程,要求:统计每个业务员的总销售业绩,显示业绩最好的前3位业务员的销售信息。

create procedure emp_totasbegindeclare@emp_no char(8),@emp_name char(10),@order_num numeric(9,2) declare@pro_no char(9)declare @text varchar(100),@count intset @count=0select @text='=======业绩最好的前三位业务员的销售信息================' print @textselect @text='业务员编号业务员姓名总销售业绩'print @textdeclare get_tot cursor forselect employeeno,employeename,sum(ordersum)from employee a,ordermaster bwhere a.employeeno=b.salernogroup by employeeno,employeenameorder by sum(ordersum)descopen get_totfetch get_tot into @emp_no, @emp_name,@order_numwhile(@@fetch_status=0)beginselect @text=@emp_no+' '+ @emp_name+''+convert(char(10),@order_num)print @textset @count=@count+1if @count<3fetch get_tot into @emp_no, @emp_name,@order_numelsebreakendclose get_totdeallocate get_totendgoexec emp_tot(7)创建存储过程,要求将大客户(销售数量位于前5名的客户)中热销的前3种商品的销售信息按如下格式输出:=======大客户中热销的前种商品的销售信息================商品编号商品名称总销售金额P2******* Pentium100CPU 22400.00P2******* Pentium主板 15130.00P2******* 17寸显示器 10600.00create procedure cus_totasbegindeclare @prod_no char(9),@prod_name char(20),@order_num numeric(9,2) declare @text varchar(100),@count intset @count=0select @text='=======大客户中热销的前种商品的销售信息================' print @textselect @text='商品编号商品名称总销售金额'print @textdeclare get_tot cursor forselect a.productNo,productName,sum(quantity*price)from Product a,OrderDetail b,(select top 5a.customerNo,customerName,sum(orderSum)客户总金额from Customer a,OrderMaster bwhere a.customerNo=b.customerNogroup by a.customerNo,customerNameorder by sum(orderSum)desc)c,OrderMaster dwhere a.productNo=b.productNo and c.customerNo=d.customerNo and b.orderNo=d.orderNogroup by a.productNo,productNameorder by sum(quantity*price)descopen get_totfetch get_tot into @prod_no, @prod_name,@order_numwhile(@@fetch_status=0)beginselect @text=@prod_no+' '+ @prod_name+''+convert(char(10),@order_num)print @textset @count=@count+1if @count<3fetch get_tot into @prod_no, @prod_name,@order_numelsebreakendclose get_totdeallocate get_tot endgoexec cus_tot(8)创建存储过程,要求:输入年度,计算每个业务员的年终奖金额。

相关文档
最新文档