ORACLE PL/SQL问题解决

来源:百度知道 编辑:UC知道 时间:2024/05/04 09:12:41
1,用SQL Plus产生以下报表.
1.使用表emp,dept
2.写成一个可以用在SQL Plus中执行的Script
使用SQLPlus的column等定义
3.不准用UNION
4. Format
部门名称 人数 工资总额
A 2 1000
B 3 2000
sum 3000
2, 创建一个Table1
id 流水号码,primary key,以sequence产生
name 姓名,字符 30
address 地址,字符 120
Table2
id 以table1的 id 为外键
category 分类(A,B,C类), 字符 1
friend 朋友,字符 50
View 统计各个姓名各类朋友有多少.
禁止使用group by.
3,写一个函数:
输入参数为数字,如 123456789
输出结果为字符,如 一亿二千三百四十五万六千七百八十九
4,TABLE如下
日期 收入 支出
2000/3/1 50 30
2000/3/2 45 60
2000/3/5 60 10
能否用SELECT语句得出以下结果
1.
日期 收入 支出 余额
2000/3/1 50 30 20
2000/3/2 45 60 5
2000/3/5 60 10 5

终于做完了,很辛苦的,多给点分哈~~
Q1:
COL DEPTNO FORM 999
COL DNAME FORM A15
SELECT NVL(A.DEPTNO,100) DEPTNO,NVL(B.DNAME,'SUM') DNAME,A.人数,A."SUM"
FROM
(select deptno,count(ename) 人数,SUM(SAL) "SUM" from emp group by rollup(deptno)) A
LEFT JOIN DEPT B
ON A.DEPTNO=B.DEPTNO
ORDER BY 1
;

DEPTNO DNAME 人数 SUM
------ --------------- ---------- ----------
10 ACCOUNTING 3 8750
20 RESEARCH 5 10875
30 SALES 6 9400
100 SUM 14 29025

Q2:
SQL> CREATE SEQUENCE SEQ_TAB1;

序列已创建。

SQL> CREATE OR REPLACE TRIGGER TRG_TAB1
2 BEFORE INSERT ON TABLE1
3 FOR EACH ROW
4 BEGIN
5 SELECT SEQ_TAB1.NEXTVAL INTO :NEW.ID FROM DUAL;
6 END;
7 /

触发器已创建

SQL> INSERT INTO TABLE1(NAME,ADDRESS) VALUES('AAA','ABC');

已创建 1 行。

SQL> COL NAME FORM A10
SQL>