ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:304.24KB ,
资源ID:25836038      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25836038.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大型数据库技术实验.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

大型数据库技术实验.docx

1、大型数据库技术实验实验7 PL/SQL编程基础姓名:学号:专业:班级:同组人:无实验日期:【实验目的与要求】掌握PL/SQL基本语法掌握PL/SQL简单存过程的编写【实验内容与步骤】7.1.实验准备工作1. 测试用表的创建与数据添加(1)创建测试表Create Table TESTTABLE( RECORDNUMBER number(4) Not Null, CURRENTDATE Date Not Null )Tablespace USER ;-这里的表空间其实可以不去管,这样它就会在当前用户的表空间中创建一个表(2)使用for语句在测试表中加入测试数据Declare maxrecords

2、Constant Int:=100;i Int:=1; Begin For i In 1.maxrecords Loop Insert Into hqf.testtable(recordnumber,currentdate) -hqf为模式名,应改动 Values(i,Sysdate); dbms_output.put_line(现在输入的内容是:|i| |Sysdate); Commit;-这里切记要commit否则将不会将数据提交到表中 End Loop; dbms_output.put_line(记录已经按照计划全部插入,请查看!); End;/ 注:hqf为登录用户名,需根据情况改动,

3、如:实验中一般用scott.(3)查询表中数据,给出查询结果截图:2. 导入教材实验数据(1)创建用户school,并赋于相应的权限:CREATE USER venditionidentified by vendition;GRANT CREATE SESSION,RESOURCE,DBATO vendition;CREATE USER SCHOOLidentified by SCHOOL;GRANT CREATE SESSION,RESOURCE,DBATO SCHOOL;(2)将文件夹“TestTableBak”中的备份文件school.DMP和vendition.DMP复制到某一目录下(

4、例如E盘根目)。(3)然后启动CMD命令提示窗口,运行如下的还原命令。imp userid=school/school ignore=y fromuser=school touser=school file=e:school.DMPimp userid=vendition/vendition ignore=y fromuser=vendition touser=vendition file=e:vendition.DMP(4)验证确认。以用户名School登录系统,查看相应的表,看是否有数据。7.2.最简单的PL/SQL程序1. 输出Hello,World/* 第一个例子:输出Hello,Wo

5、rld*/set serverout on -设置SQL*Plus将服务器所返回的写出来begin -块开始 DBMS_OUTPUT.put_line(Hello,World); -在控制台输出信息,类似C语言的Printf或者java语言中的System.out.printend; -块结束运行结果为:1. 接收数据并输出/* 在此基础上,完成Hello,某某,某某从客户端得到*/declare v_name varchar2(20);begin -块开始 v_name:=&姓名; -与“客户端”交互,类似C语言的scanf语句 DBMS_OUTPUT.put_line(Hello,|v_n

6、ame); end; -块结束运行结果为:7.3.简单变量的使用1变量的声明与引用set serveroutput on;- PL/SQL变量之 简单类型declare v_dept_id number(5) := 1111; v_age binary_integer := 12; v_dept_name varchar2(20) := 人事部; v_rate constant number(4,2) := 22.12; v_valid boolean not null := TRUE; v_hire_date date not null := sysdate + 7;begin v_dept

7、_id := 2222; dbms_output.put_line(v_dept_id); end;运行结果为:2Into子句的使用:DeclareV_deptno number (2);v_loc varchar2(15);begin select deptno,locinto v_deptno,v_locfrom deptwhere dname=SALES;DBMS_OUTPUT.PUT_LINE (V_deptno | and |v_loc);end;运行结果为:实验练习:编写一PL/SQL程序,实现依次从客户端接收各字段的值,并放于变量中,输完一条记录的所有字段值后,将值写到数据库表E

8、mp中。请给出程序源码: Declare V_EMPNO NUMBER(4); V_ENAME VARCHAR2(10); V_JOB VARCHAR2(9); V_MGR NUMBER(4); V_HIREDATE DATE; V_SAL NUMBER(7,2); V_COMM NUMBER(7,2); V_DEPTNO NUMBER(2); begin insert into emp values(&V_EMPNO,&V_ENAME,&V_JOB,&V_MGR,&V_HIREDATE, &V_SAL,&V_COMM,&V_DEPTNO);end;给出测试结果:3变量作用域:阅读以下程序,熟

9、悉变量的斌值方法,理解变量的作用,给出运行结果。-嵌套块中的变量赋值和作用域DECLARE v_weight NUMBER(3) := 100; v_message VARCHAR2(255) := Outer Value;BEGIN DECLARE v_weight NUMBER(3) := 1; v_message VARCHAR2(255) :=Inner value; BEGIN v_weight := v_weight + 1; v_message := Put| v_message; DBMS_OUTPUT.PUT_LINE(inner block | to_char(v_weig

10、ht) | v_message); END; v_weight := v_weight + 1; v_message := Put | v_message; DBMS_OUTPUT.PUT_LINE(outter block | to_char(v_weight) | v_message);END;运行结果为:7.4.使用%type和%rowtype变量1使用%type变量阅读以下程序,理解其功能,给出运行结果。(1)DROP TABLE EMPL;create table EMPL( EMPLOYEE_ID NUMBER(5) not null, LAST_NAME VARCHAR2(20)

11、 not null, HIRE_DATE DATE, SALARY NUMBER(8,2), JOB_ID NUMBER(5), DEPARTMENT_ID NUMBER(5);set serveroutput on;- PL/SQL变量之%TYPE类型declare v_last_name employees.last_name%TYPE;- 用户hr v_hire_date employees.hire_date%TYPE; v_balance number(6,2) ; v_min_balance v_balance%type;begin dbms_output.put_line(定义%

12、type类型的变量);end;/运行结果为:(2)declarev_deptno dept.deptno%type;v_loc dept.loc%type;beginselect deptno,locinto v_deptno,v_locfrom deptwhere dname=SALES;DBMS_OUTPUT.PUT_LINE (V_deptno | and |v_loc);end;/运行结果为:2使用%Rowtype变量阅读以下程序,理解其功能,给出运行结果。(1)DROP TABLE EMPL;create table EMPL( EMPLOYEE_ID NUMBER(5) not n

13、ull, LAST_NAME VARCHAR2(20) not null, HIRE_DATE DATE, SALARY NUMBER(8,2), JOB_ID NUMBER(5), DEPARTMENT_ID NUMBER(5);set serveroutput on;- PL/SQL变量之%ROWTYPE类型declare v_empl emp%rowtype;begin dbms_output.put_line(定义%rowtype类型的变量);end;/运行结果为:(2)drop table stock;create table stock(symbol varchar2(50),pr

14、ice number(6,2);insert into stock values(IBM,188.88);insert into stock values(ORCL,100.88);DECLARE stock_info1 stock%ROWTYPE; stock_info2 stock%ROWTYPE; stock_info3 stock%ROWTYPE;BEGIN-对应纪录直接取得相应字段的:Populate the specific fields in a record SELECT symbol,price INTO stock_info1.symbol,stock_info1.pric

15、e FROM stock WHERE symbol =ORCL; -对应纪录直接 放入纪录中 SELECT * INTO stock_info2 FROM stock WHERE symbol =ORCL; stock_info3 := stock_info2; -记录间可以相互赋值 stock_info3.symbol:=ORACLE; -对纪录的各字段赋值。 DBMS_OUTPUT.PUT_LINE(stock_info1 : | stock_info1.symbol | |stock_info1.price); DBMS_OUTPUT.PUT_LINE(stock_info2 : | s

16、tock_info2.symbol | |stock_info2.price); DBMS_OUTPUT.PUT_LINE(stock_info3 : | stock_info3.symbol | |stock_info3.price);END;运行结果为:思考:如下所示:改变表结构。drop table stock;create table stock(symbol varchar2(50),price number(6,2),owner varchar2(10);对以上程序运行有影响吗?为什么?沒什麽影響。7.5. 条件判断语句的使用阅读并理解以下程序,调试并给出运行结果。1If语句:dr

17、op table employee;create table employee( empno number(4), name varchar2(30), salary number(8,2);insert into employee values(7900,黄蓉,3000);commit;set serveroutput on;-执行结果如何呢?DECLARE -注意employee.salary%TYPE这一类型定义,定义v_SALARY为emp表的sal字段的类型 -这是plsql一种方便的定义类型方法。 v_salary employee.salary%type; v_comment v

18、archar2(35);BEGIN /* 返回employee的salary */ SELECT salary INTO v_SALARY FROM employee WHERE name = 黄蓉; -WHERE empno = 7900; dbms_output.put_line(薪水是: | v_SALARY); - 条件判断语句 IF v_SALARY 1000 THEN v_Comment := 比较低; ELSIF v_SALARY 3000 THEN v_Comment := A little higher:凑和; ELSIF v_SALARY 50 - 跳出循环. IF v_C

19、ounter 10 THEN EXIT; END IF; END LOOP;END;给出运行结果:2FOR LOOP语句-FOR LOOP语句BEGIN FOR v_Counter IN 1.10 LOOP dbms_output.put_line(v_Counter is | v_Counter); END LOOP; -DBMS_OUTPUT.PUT_LINE(v_Counter); -在for循环外不可以访问循环变量END;给出运行结果:3while LOOP语句-while LOOP语句 DECLARE v_Counter NUMBER := 1;BEGIN -v_Counter = 10-循环. WHILE v_Counter = 50 LOOP dbms_output.put_line(v_Counter is | v_Counter); v_Counter := v_Counter + 1; END LOOP;END;给出运行结果:4while语句-WHILE语句DECLARE v_Counter NUMBER := 1;BEGIN WHILE v_Counter 50 - 跳出循环. END LOOP;END;给出运行结果:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1