[数据库] 一次pro*c练习总结

一.实验内容:

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, 了解了一点编译的步骤

posted @ 2022-05-10 21:07  泥烟  阅读(37)  评论(0编辑  收藏  举报