一道关于用oracle建表的编程问题,急!!!!

教学数据库中包含有学生、课程和选课三个表,其关系模式定义分别为:学生(学号,姓名,性别,出生年月,系部,专业,籍贯,个人爱好)课程(课程号,课程名称,学分)选课(学号,课... 教学数据库中包含有学生、课程和选课三个表,其关系模式定义分别为:
学生(学号,姓名,性别,出生年月,系部,专业,籍贯,个人爱好)
课程(课程号,课程名称,学分)
选课(学号,课程号,成绩)
试根据以下题目要求,写出完成任务。
1)创建有输入、输出参数的存储过程tj_avj,根据学号查询输出该生的姓名和平均成绩,并写出调用的SQL语句块。

2)创建函数get_kc_info,根据指定的(学号)课程号返回其对应的课程名称及学分,并写出调用的SQL语句块。
3)使用IF- THEN – ELSE双分支语句结构实现以下功能:根据输入的学生学号,计算其选课平均成绩,若平均成绩大于等于60,显示输出其学号及“及格”信息;否则,显示输出其学号及“不及格”信息。
4)使用WHILE循环语句计算1~100的累加和,显示输出格式要求为:1+2+3+…+100=累加和。
5)建立游标并使用标量变量接受游标数据,打印学生表的学号、姓名信息。
展开
 我来答
lilinhui326
2013-12-26
知道答主
回答量:30
采纳率:0%
帮助的人:24.4万
展开全部
1) create or replace procedure tj_avj(p_sno int,p_sname out varchar2,p_avg out
number)
is
begin
select sname,avg(grade) into p_sname,p_avg from student,sc where sc.sno=p_sno

and
student.sno=sc.sno group by sname;
dbms_output.put_line(p_sname);
dbms_output.put_line(p_avg);
end;
/

SQL> var a varchar2(10)
SQL> var b number
SQL> exec tj_avj(1001,:a,:b);
追问
只有一个吗?
追答
2) create or replace function get_kc_info (v_cno number) return varchar2 is v_cname varchar2(10); v_ccredit number; v_str varchar2(20); begin select cname,ccredit into v_cname,v_ccredit from course where cno=v_cno; v_str:=v_cname||'   '||to_char(v_ccredit); return v_str; end;

select get_kc_info(1) from dual;

3)create or replace function tt(v_sno number)return varchar2isv_avg number;v_str varchar2(20);beginselect avg(grade) into v_avg from sc where sno=v_sno;if v_avg>60thenv_str:=v_sno||'及格';elsev_str:=v_sno||'不及格';end if;return v_str;end;/

SQL> select tt(1002) from dual;

4) create or replace function kk return number is s number; i number; begin i:=1; s:=0; while i set serveroutput onSQL> /
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式