EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/ char Deptname[20]; char Hsno[9]; char Hsname[20]; char Hs[2]; int HSage; int NEWAGE; EXEC SQL END DECLARE SECTION; /*主变量说明结束*/ long SQLCODE; EXEC SQL INCLUDE SQLCA; /*定义SQL通信区*/ 程序实例(续) int main void /*C语言主程序开始*/ int count 0; char yn; /*变量yn代表yes或no*/ printf "Please choose the department name CS/MA/IS : " ; scanf "%s",deptname ; /*为主变量deptname赋值*/ EXEC SQL CONNECT TO [emailprotected]:54321 USER "SYSTEM"/"MANAGER"; /*连接TEST*/ EXEC SQL DECLARE SX CURSOR FOR /*定义游标SX*/ SELECT Sno,Sname,S,Sage /*SX对应的语句*/ FROM Student WHERE SDept :deptname; EXEC SQL OPEN SX; /*打开游标SX,指向查询结果的第一行*/ 程序实例(续) for ; ; /*用循环结构逐条处理结果集中的记录*/ EXEC SQL FETCH SX INTO :HSno,:Hsname,:HS,:HSage; /*推进游标,将当前数据放入主变量*/ if SQLCA.SQLCODE! 0 /*SQLCODE ! 0,表示操作不成功*/ break; /*利用SQLCA中的状态信息决定何时退出循环*/ if count++ 0 /*如果是第一行的话,先打出行头*/ printf "\n%-10s %-20s %-10s %-10s\n", "Sno“,"Sname“,"S", "Sage" ; printf "%-10s %-20s %-10s %-10d\n“, HSno,Hsname,Hs,HSage ; /*打印查询结果*/ printf “UPDATE AGE y/n ?” ; /*询问用户是否要更新该学生的年龄*/ do scanf "%c",&yn ; while yn ! 'N' && yn ! 'n' && yn ! 'Y' && yn ! 'y' ; 程序实例(续) if yn 'y' || yn 'Y' /*如果选择更新操作*/ printf "INPUT NEW AGE:" ; scanf "%d",&NEWAGE ; /*用户输入新年龄到主变量中*/ EXEC SQL UPDATE Student /*嵌入式SQL更新语句*/ SET Sage :NEWAGE WHERE CURRENT OF SX; /*对当前游标指向的学生年龄进行更新*/ EXEC SQL CLOSE SX; /*关闭游标SX,不再和查询结果对应*/ EXEC SQL COMMIT WORK; /*提交更新*/ EXEC SQL DISCONNECT TEST; /*断开连接*/ 8.1 嵌入式SQL 8.1.1 嵌入式SQL的处理过程 8.1.2 嵌入式SQL语句与主语言之间的通信 8.1.3 不用游标的SQL语句 8.1.4 使用游标的SQL语句 8.1.5 动态SQL 8.1.3 不用游标的SQL语句 不用游标的SQL语句的种类 说明性语句 数据定义语句 数据控制语句 查询结果为单记录的SELECT语句 非CURRENT形式的增删改语句 不用游标的SQL语句(续) 1. 查询结果为单记录的SELECT语句 2. 非CURRENT形式的增删改语句 1. 查询结果为单记录的SELECT语句 这类语句不需要使用游标,只需用INTO子句指定存放查询结果的主变量。系统概论
[例8.2] 根据学生号码查询。 EXEC SQL SELECT Sno,Sname,S,Sage,Sdept INTO:Hsno,:Hname,:H,:Hage,:Hdept FROM Student WHERE Sno :givensno; /*把要查询的学生的学号赋给为了主变量givensno*/ An Introduction to Database System * *
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23745-7.html
日本海自完全没有战斗机
看待问题要从全局出发
国际法只是美国掩饰霸权的外衣
即使是自家住宅