数据库系统第八章PPT教学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int HSage
int NEWAGE;
EXEC SQL END DECLARE SECTION;
long SQLCODE;
EXEC SQL INCLUDE sqlca;
int main(void)
{
int count=0;
char yn;
printf(“please choose the department name(CS/MA/IS):”);
一. 说明性语句
EXEC SQL BEGIN DECLARE SECYION EXEC SQL END DECLARE SECYION
二. 数据定义语句
补例1 建立一个“学生”表Student. EXEX SQL CREATE TABLE Student
(Sno CHAR(5) NOT NULL UNIQUE , Sname CHAR(20) , Ssex CHAR(1) , Sage INT, Sdept CHAR(15)); 三. 数据控制语句
SELECT Sno, Cno, Grade
FROM SC;
EXEC SQL OPEN C1;
FOR( ; ; )
{ EXEC SQL FETCH C1 INTO:Sno,:Cno, :Grade;
if (sqlca.sqlcode<>SUCCESS)
break;
printf(“Sno:%s,Cno:%s,Grade:%d”, :Sno,:Cno, :Grade);
scanf(“%s”, &deptname);
EXEC SQL CONNECT TO TSET @localhost:54321 USER
“SYSTEM”/”MAபைடு நூலகம்AGER”;
2020/12/10
6
EXEC SQL DECLARE SX CURSOR FOR SELECT Sno, Sname, Ssex,Sage FROM Student WHERE SDept=:deptname; EXEC SQL OPEN SX; for( ; ; ) { EXEC SQL FETCH SX INTO:HSno,:HSname, :HSsex;:HSage;
程序运行过程中可以修改当前连接,对应的SQL语句为:
EXEC SQL SET CONNECTION connection-name | DEFAULT;
2.关闭数据库连接 建立连接的ESQL语句是: EXEC SQL DISCONNECT [connection-name];
2020/12/10
4
五、程序实例
if (sqlca.sqlcode!=0) break;
if(count++=0) printf(“\n%-10s%-20s%-10s%-10s\n”, “Sno”,”Sname”,”Ssex”,”Sage”); printf(“\%-10s%-20s%-10s%-10d\n”, HSno,HSname,HSsex,HSage); printf(“UPDATE AGE(y/n) ?”); do {
BEGIN DECLARE SECYION 与 END DECLARE SECYION之
间进行说明.
2020三/12、/10 游标
3
四、建立和关闭数据库连接 1.建立数据库连接 建立连接的ESQL语句是:
EXEC SQL CONNECT TO target [AS connection-name] [USER user-name];
……
EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
CHAR Sno(5);
CHAR Cno(3);
INT Grade;
EXEC SQL END DECLARE SECTION;
main()
{ EXEC SQL DECLARE C1 CURSOR FOR
EXEC SQL UPDATE Student SET Sage=:NEWAGE WHERE CURRENT OF SX;
} } EXEC SQL CLOSE SX; EXEC SQL COMMIT WORK; EXEC SQL DISCONNECT TEST; }
2020/12/10
8
8.1.3 不用游标的SQL语句
补例2 把查询Student表的权限授予用户U1. E2X02E0/1X2/10SQL GRANT SELECT ON TABLE Student TO U19 ;
注意时间
2020/12/10
1
第八章 数据库编程
8.1 嵌入式 SQL
8.1.1 嵌入式SQL的处理过程
在嵌入式SQL中, 为了能够区分SQL语句与主语言语句,所有SQL语句都必须 加前缀EXEC SQL。 SQL语句的结束标志则随主语言的不同而不同.
例如,在PL/1和C中以分号“;”结束:
EXEC SQL <SQL语句>;
数据库工作单元与源程序工作单元之间的通信主要有:
(1).向主语言传递SQL语句的执行状态信息. (2).主语句向SQL语句提供参数. (3).将SQL语句查询数据库的结果交主语言处理.
一、SQL通信区
SQL通信区SQLCA
二、主变量
1. 输入主变量
2. 输出主变量
3. 指示变量
所有主变量和指示变量必须在SQL语句
scanf(“%c”,&yn); } while (yn!=‘N’ && yn!=‘n’ && yn!=‘Y’ && yn!=‘y’);
2020/12/10
7
if( yn!=‘Y’ || yn!=‘y’); printf(“INPUT NEW AGE:”); scanf(“%d”,&NEWAGE”);
在COBOL中以END-EXEC结束:
EXEC SQL <SQL语句> END-EXEC
例如一条交互式的SQL语句:
DROP TABLE Student; 嵌入到C程序中,应写作:
2020/1E2/X10EC SQL DROP TABLE Student;
2
8.1.2 嵌入式SQL语句与主语言之间的通信
}
EXEC AQL CLOSE C1;
} 2020/12/10
5
五、程序实例
[例1] 依次检查某个系的学生记录,交互式更新某些学生年龄。
EXEC SQL BEGIN DECLARE SECTION;
char deptname[20];
char HSno(9);
char HSname(20);
char HSsex(2);