一.实验内容:
1.pc程序预编译编译为.c文件
2.Pro*C编程练习
1.查看各个系别学生信息
2.查看个人成绩
二.实验步骤:
1.pc程序预编译编译为.c文件
关于这次的实验, 相信很多同学都遇到了下面这样的情况
九几年的vc6实在是太老旧了,不支持64位, 我们安装的Oracle大都是64位的
我是用的IDE是小熊猫DEVC++
Ⅰ.在cmd中studentAgeQuery.pc 所处目录下预编译为example.c
proc studentAgeQuery.pc example.c
Ⅱ.在IDE中新建空项目并导入example.c
Ⅲ.配置关联本地Oracle的链接器和目录文件
Ⅳ.编译运行
效果图:
2.Pro*C编程练习
Ⅰ.建立基本表,插入相关数据
Ⅱ.编辑studentAgeQuery.pc , 实现两个功能
我用的是notepad++(解决一切编码问题的神器)
这里仅列出主要代码的实现
为两个功能分别声明游标sx, sy
exec sql declare sx cursor for
select sname,sex,age from s where dept=:s_dept;
exec sql declare sy cursor for
select cno, nvl(grade, -1) from sc
where sno=:s_no;
sy中成绩若为null, 则设为-1, 方便下面算平均
功能1
输入系别->打开游标->推进游标, 逐行输出结果
功能2
输入学号-> 1.利用学号sql查找姓名->2.推进游标, 记录cno, grade
->3.利用cno,sql查找课程名cname->输出结果,计算平均数并输出
totalScore / effect_gradeNum
>注意
有的成绩为null, 在定义游标时我使用了nvl(grade, -1), 所以累加总成绩(totalScore ,float型,)时需要辨别grade是否非负, 且需要累加effect_gradeNum(即有效成绩的数量)
关闭游标
exec sql close sx;
exec sql close sy;
Ⅲ.预编译为test.c, 导入项目
proc studentAgeQuery.pc test.c
(将前面的example.c注释掉)
Ⅳ.编译运行
效果图:
三.实验总结:
简单实现了基于c语言的嵌入式sql, 了解了一点编译的步骤
|