实验4 SQL_PL编程基础_V2013(3)

2018-11-26 22:34

对以上程序运行有影响吗?为什么?

4.4. 使用复合变量

1.记录类型

阅读以下程序,理解其功能,给出运行结果。

(1)set serveroutput on;

-- PL/SQL变量之RECORD类型1 declare

type named_record_type is record ( last_name varchar2(20), first_name varchar2(20), birthday date, age number(3) );

v_record_1 named_record_type; v_record_2 named_record_type; begin

v_record_1.last_name := '张'; v_record_1.first_name := '三丰';

v_record_1.birthday := '2-2月-1788'; v_record_1.age := 432;

dbms_output.put_line('定义record类型的变量'); end; /

运行结果为:

(2)--使用记录类型2:?

set serveroutput on; DECLARE

第 11 页 共 31 页

TYPE remp IS RECORD( v_empno number(10), v_ename VARCHAR2 (20), v_salary NUMBER (10,2) );

rsm_emp remp;

BEGIN

SELECT empno,ename,sal INTO rsm_emp.v_empno,rsm_emp.v_ename,rsm_emp.v_salary FROM emp

WHERE sal =(SELECT MAX(sal) FROM emp); --求出工资最高的雇员

DBMS_OUTPUT.PUT_LINE ('Highest Paid Employee is '||rsm_emp.v_ename); DBMS_OUTPUT.PUT_LINE ('Id is '||rsm_emp.v_empno ||'Salary ' ||

to_char(rsm_emp.v_salary,'999,999.99'));

END;

运行结果为:

(3)--使用记录类型3:

set serveroutput on; DECLARE

TYPE remp IS RECORD( v_empno number(10), v_ename VARCHAR2 (20), v_salary NUMBER (10,2) );

rsm_emp remp; BEGIN

SELECT empno,ename,sal INTO rsm_emp FROM emp

WHERE sal =(SELECT MAX(sal) FROM emp); --求出工资最高的雇员

DBMS_OUTPUT.PUT_LINE ('Highest Paid Employee is '||rsm_emp.v_ename); DBMS_OUTPUT.PUT_LINE ('Id is '||rsm_emp.v_empno ||'Salary ' ||

第 12 页 共 31 页

to_char(rsm_emp.v_salary,'999,999.99'));

END;

运行结果为:

4.5. 复合变量的使用

1. 完整定义一个记录类型的变量,了解其简单应用。

阅读以下程序,理解其功能,给出运行结果。 Declare

Type myrecord Is Record( r_recordnumber Number(4), r_currentdate Date );

v_myrecord myrecord; Begin

Select *

Into v_myrecord From testtable

Where recordnumber=80;

dbms_output.put_line('用记录类型的变量取出来的值为:'|| v_myrecord.r_recordnumber|| v_myrecord.r_currentdate); End;

给出运行结果:

2. 简单的%Rowtype定义变量的实例

阅读以下程序,理解其功能,给出运行结果。

Declare

v_myrow testtable%Rowtype;

第 13 页 共 31 页

Begin

Select *

Into v_myrow From testtable

Where recordnumber=90;

dbms_output.put_line('用rowtype查询的结果是:

'||v_myrow.recordnumber||v_myrow.currentdate);

--dbms_output.put_line('用rowtype查询的结果是:

'||v_myrow.recordnumber||v_myrow.currentdate||myrow.Rowid);

--上句操作说明了行类型的变量中不会把oracle表中的rowid的值带进来 End;

给出运行结果:

4.6.条件判断语句的使用

阅读并理解以下程序,调试并给出运行结果。 1.If语句:

drop 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 VARCHAR2(35);

第 14 页 共 31 页

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 < 5000 THEN --ELSIF! 不是elseif v_Comment := 'high:比较高'; ELSE

v_Comment := 'VERY HIGH:非常高!'; END IF;

dbms_output.put_line('The Employee: salary is ' || v_SALARY); dbms_output.put_line('his salary is ' || v_Comment); END; /

给出运行结果:

2.Case语句:

为了简化多个选择用if来做判断,这种case区别于编程语言中的case语句多用于多种情况的判断。

第 15 页 共 31 页


实验4 SQL_PL编程基础_V2013(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国石英石台面行业市场前景分析预测年度报告(目录)

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

马上注册会员

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