使用游标显示销售报表

时间: 2023-10-04 admin IT培训

使用游标显示销售报表

使用游标显示销售报表

1、假设已在某远程客户端完成网络服务名配置,服务名为aptech,请写出用户MARTIN(用户口令martinpass)连接到服务器的命令:

Connect martin/martinpass@aptech

2、SYS用户以管理员身份登录后,要授予用户MARTIN可以对SCOTT用户的EMP表进行查询的权限,请写出授权命令:(假设MARTIN用户已存在)

Grant select on scott.emp to martin 3、

创建表employee的副本,但不包含表中的记录:

CREATE TABLE employee_copy AS select * from employee where 1=2

4、查询itemfile表中itemrate列的信息,要求将数值转换为字符串,并使用当前货币符号作为前缀:

SELECT to_char (itemrate,'C99999') FROM itemfile; 5、查itemfile表中itemdesc、re_level列的信息,要求re_level为NULL时显示为0

SELECT itemdesc, NVL (re_level,0) FROM itemfile; 6、完成以下PL/SQL块,功能是:显示2 到50的25个偶数。 BEGIN

FOR even_number IN 1..25 LOOP

DBMS_OUTPUT.PUT_LINE(even_number*2); END LOOP END; 7、

完成以下PL/SQL块,功能是:接受职员编号并检索职员姓名。

将职员姓名存储在变量empname中,如果代码引发VALUE_ERROR异常,则向用户显示错误消息。 DELCARE

empname employee.ename%TYPE;; eno employee.empno%TYPE; BEGIN

eno:=?&employee_number?;

select ename into empname from employee where empno=eno DBMS_OUTPUT.PUT_LINE(?职员姓名:?||empname); exception

WHEN VALUE_ERROR THEN

DBMS_OUTPUT.PUT_LINE(?要存储在变量中的值过大?) END;

8、完成以下PL/SQL块,功能是:使用游标,显示所有单价低于250元的玩具的单价。 DECLARE

my_toy_price toys.toyprice%TYPE;

CURSOR toy_cur IS

SELECT toyprice FROM toys WHERE toyprice<250; BEGIN

Open toy_cur LOOP

Fetch toy_cur into my_toy_price EXIT WHEN toy_cur%NOTFOUND;

DBMS_OUTPUT.PUT_LINE (toy_cur%ROWCOUNT || '. 玩

具单价:' || my_toy_price); END LOOP; CLOSE toy_cur; END;

9、完成以下PL/SQL块,功能是:使用游标显示销售报表。如果目标销售额(tsales)大于实际销售额(asales),则显示消息“需提高销售额”。如果tsales等于asales,则显示消息“已达到销售额”,否则显示消息“销售业绩出色” DECLARE

CURSOR sales_cur IS SELECT * FROM salesdetails; BEGIN

For sales_res in sales_cur loop

IF sales_rec.tsales > sales_rec.asales THEN

DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||' 需提高销售额'); ELSE

IF sales_res.tsales=sales_res.asales THEN

DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||'已达到销售额'); ELSE

DBMS_OUTPUT.PUT_LINE('产品:' ||sales_rec.pid||'

销售业绩出色'); END IF; END IF; END LOOP; END;

10、完成以下PL/SQL块,功能是:创建一个交换两数的过程。 CREATE OR REPLACE PROCEDURE

swap(p1 IN OUT NUMBER, p2 in out NUMBER) IS v_temp NUMBER; BEGIN v_temp := p1; p1 := p2; p2 := v_temp; END;

11、完成以下PL/SQL块,功能是:创建一个函数dept_name,其功能是接受职员编号后返回职员所在部门名称。(注:部门名称在dept表中,而职员信息在emp表中,职员所在部门号的列名为deptno) CREATE OR REPLACE FUNCTION dept_name (emp_no NUMBER)

RETURN VARCHAR2 AS dept_no NUMBER(2); result dept.dname%TYPE; BEGIN Selecet deptno into dept_no from emp where empno=emp_no SELECT dname INTO result FROM dept WHERE deptno = dept_no; Return result EXCEPTION

WHEN OTHERS THEN RETURN NULL; END;

12、要执行pack_me包中的order_proc过程(有一个输入参数),假设参数值为?002?,可以输入以下命令: EXECUTE pack_ma.order-proc(‘002’)

13、完成以下PL/SQL块的功能是:创建一个触发器biu_job_emp,