请教大家几个Oracle的问题,发图了

sequanyining 2012-02-04 08:24:47

这个是我创建的表 请大家帮我回答下图中的3个问题,谢谢了!!
create table student(
studentId char(4) primary key,
studentName nvarchar2(10),
lessionName nvarchar2(10),
score number(3)
);

1.编写一个函数,输入一个学生姓名和课程名称返回课程分数。
2.用sql语句查询出课程总分最高的学生姓名。
3.sql语句查询出每门课程都小于70分的学生姓名。

写的函数请中文注释一下意思,万分感谢!!
...全文
120 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingchaoyan 2012-02-07
  • 打赏
  • 举报
回复
ls 有点小错误

SQL> select * from student;

STUD STUDENTNAME LESSONNAME SCORE
---- -------------------- -------------------- ----------
1 张三 语文 69
2 张三 数学 65
3 李四 语文 68
4 李四 数学 78
5 王五 语文 67

----------------------------------------1--------------------------
SQL> ed
已写入 file afiedt.buf

1 CREATE OR REPLACE FUNCTION GET_LESSON_SCORE
2 (
3 V_StudentName IN student.studentName%TYPE,
4 V_LessonName IN student.lessonName%TYPE,
5 N_Score OUT student.score %TYPE
6 )
7 RETURN NUMBER
8 IS
9 BEGIN
10 SELECT score INTO N_Score FROM student
11 WHERE student.studentName = V_StudentName
12 AND student.lessonName = V_LessonName;
13 RETURN N_Score;
14* END;
SQL> /

函数已创建。

SQL> exec :score:=get_lesson_score('张三','语文',:score);

PL/SQL 过程已成功完成。

SQL> print score

SCORE
----------
69

----------------------------------------2--------------------------
SQL> ed
已写入 file afiedt.buf

1 SELECT studentname FROM
2 (SELECT studentname
3 FROM student
4 GROUP BY studentname
5 ORDER BY SUM(score) DESC
6 )
7* WHERE rownum<=1
SQL> /

STUDENTNAME
--------------------
李四
----------------------------------------3--------------------------
SQL> ed
已写入 file afiedt.buf

1 SELECT DISTINCT studentname FROM student
2 WHERE studentname NOT IN (
3* select studentname from student where score>=70)
SQL> /

STUDENTNAME
--------------------
王五
张三

SQL>


xiaobluesky 2012-02-04
  • 打赏
  • 举报
回复

--都是挺简单的题目,想学好ORACLE的话,这些是必须的,有空自己多练习练习.没人能老帮你的.呵呵
--没有测试过,可能会有部分问题,呵呵

--1
CREATE OR REPLACE FUNCTION GET_LESSON_SCORE
(
V_StuName IN student.studentName%TYPE,
V_LessionName IN student.lessionName%TYPE,
N_Score OUT student.score %TYPE
)
RETURN NUMBER
IS
BEGIN
SELECT score INTO N_Score FROM student
WHERE student.studentName = V_StuName
AND student.lessionName = V_LessionName;
RETURN N_Score;
END GET_LESSON_SCORE;


--2
SELECT student.studentName FROM STUDENT WHERE STUDENT.score =
(SELECT MAX(SCORE) FROM STUDENT)

--3
SELECT * FROM STUDENT WHERE STUDENT.STUDENTID NOT IN
(SELECT STUDENT.STUDENTID FROM STUDENT WHERE SCORE >= 70)

sequanyining 2012-02-04
  • 打赏
  • 举报
回复
好的 谢了 也欢迎大家帮我看看 初学者苦恼 急用
mingchaoyan 2012-02-04
  • 打赏
  • 举报
回复
有时间写下 还是比较基础的
最近在研究如何用 易语言 连接oracle数据库,搜集了网上很多源码和请教了一些人都没能测试成功。 经过不懈努力,我终于测通了!哈哈哈哈~ 不过,我想吐槽的是: 在搜集资料过程中,发现很多人都说易语言很难连上oracle,讲真,我也觉得官方不够给力! oracle作为全球第一大数据库厂商,为什么出易语言的官方支持库来适配呢? 虽然说可以通过调用windows的odbc来连,但这对不懂的人来说是很困难的一件事! 所以,真心希望官方能开发出oracle的支持库!!! 在测试过程中,我总结了以下几个需要注意的点: 1、无论你的电脑是32位还是64位,都必须安装32位的oracle客户端。安装类型可以是:管理员、运行时。 2、从oracle 11g以后,oracle官方不再提供32位的客户端安装介质。目前最新的oracle客户端为win32_11gR2_client.zip,可直接从官网下载。 3、选择DRIVER连接时,需要先在$ORACLE_HOME/network/admin/tnsnames.ora文件中的定义的一个连接名,测试成功后再将连接名配置在SERVER(连接服务名)中。 4、选择DSN连接时,需要先在OS系统数据源(32位)中配置好数据源,测试成功后再将数据源名称配置在DSN(数据源)中。 只要你按照以上几点来,就肯定可以用易语言连接oracle,并执行简单查询。 我自己的测试代码已分享出来了,需要oracle客户端的朋友可以去官方下载,也可以私信我。 好了,第一次参加这么盛大的活动,小小意思,请各位看官指点,谢谢!

17,378

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧