《数据厍设计与开发》讲义 3.1.1C语言中嵌入式SQL 区分SQL语句与C语言语句 嵌入的SQL语句以 EXEC SQL开始,以分号(;)结束。 FF exec sql select came disct into: cust name, cust disct from customers where cid= cust id 嵌入SQL语句与C语言之间的数据传递 宿主变量(宿主变量出现于SQL语句中时,前面加(:) 以区别列名) C变量既可以用在C语句中,也可用在SQL语句中, 用来在两者之间传递数据 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 3.1.1 C语言中嵌入式SQL • 区分SQL语句与C语言语句 嵌入的SQL语句以EXEC SQL开始,以分号(;)结束。 例:exec sql select came,discnt into :cust_name,:cust_discnt from customers where cid=:cust_id; • 嵌入SQL语句与C语言之间的数据传递 宿主变量(宿主变量出现于SQL语句中时,前面加(:) 以区别列名) C变量既可以用在C语句中,也可用在SQL语句中, 用来在两者之间传递数据
《数据厍设计与开发》讲义 3.1.1C语言中嵌入式SQL 宿主变量的声明 在嵌入式SQL语句中使用宿主变量,必须先声明它们 声明为通常的C变量,并将其放在下列标识语句之间, EXEC SQL BEGIN DECLARE SECTION EXEC SQL END DECLARE SECTION 1651: exec sql begin declare section char cust_ id[5] =co01 char cust name[14/: float cust disct exec sql end declare section; 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 3.1.1 C语言中嵌入式SQL • 宿主变量的声明 在嵌入式SQL语句中使用宿主变量,必须先声明它们: 声明为通常的C变量,并将其放在下列标识语句之间, EXEC SQL BEGIN DECLARE SECTION EXEC SQL END DECLARE SECTION 例: exec sql begin declare section; char cust_id[5]=‘c001’; char cust_name[14]; float cust_discnt; exec sql end declare section;
《数据厍设计与开发》讲义 3.1.1C语言中嵌入式SQL 在SQL中建立连接和释放连接 在一个嵌入式SQL程序开始,程序面临着和交互式用户 同样的问题:怎样与数据库建立连接. 例: exec sql begin declare section;/*声明变量* char user_name[10,user__ped[ 10], exec sql end declare section; strcpy( user name,' mytest);/*变量赋值*/ strcpy (user_pwd test; exec sql connect user_name identified by: user_pwd;/* Oracle连接*/ 例: exec sql commit release;/* Oracle断开连接*/ exec sql roll back release;/* Oracle断开连接* 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 3.1.1 C语言中嵌入式SQL • 在SQL中建立连接和释放连接 在一个嵌入式SQL程序开始,程序面临着和交互式用户 同样的问题:怎样与数据库建立连接. 例: exec sql begin declare section; /*声明变量*/ char user_name[10],user_ped[10]; exec sql end declare section; strcpy(user_name,’mytest’); /*变量赋值*/ strcpy(user_pwd,’test’); exec sql connect :user_name identified by :user_pwd; /*Oracle连接*/ 例:exec sql commit release;/*Oracle断开连接*/ exec sql rollback release;/*Oracle断开连接*/
《数据厍设计与开发》讲义 3.1.2游标 ·SQL与主语言之间操作方式的协调 SQL:一次一集 C语言:一次一记录。 游标:在査询结果的记录集合中移动的指针。 若一个SQL语句返回单个元组,则不用游标 若一个SQL语句返回多个元组,则使用游标 不需要游标的数据操作 结果是一个元组的 selec语句 exec sql select came, disct into: cust name, cust disct from customers where cid= cust id 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 3.1.2 游标 • SQL与主语言之间操作方式的协调 SQL:一次一集合。 C语言:一次一记录。 – 游标:在查询结果的记录集合中移动的指针。 若一个SQL语句返回单个元组,则不用游标。 若一个SQL语句返回多个元组,则使用游标。 – 不需要游标的数据操作 • 结果是一个元组的select语句 exec sql select came,discnt into :cust_name,:cust_discnt from customers where cid=:cust_id;
《数据厍设计与开发》讲义 3.1.2游标 需要游标的数据操作 当 select语句的结果中包含多个元组时,使用游标可 以逐个存取这些元组。 活动集: select语句返回的元组的集合 当前行:活动集中当前处理的那一行。游标即是指 向当前行的指针。 游标分类 滚动游标:游标的位置可以来回移动,可在活动 集中取任意元组。 非滚动游标:只能在活动集中顺序地取下一个元 组 更新游标:数据库对游标指向的当前行加锁,当 程序读下一行数据时,本行数据解锁,下一行数 据加锁 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 3.1.2 游标 – 需要游标的数据操作 当select语句的结果中包含多个元组时,使用游标可 以逐个存取这些元组。 活动集:select语句返回的元组的集合。 当前行:活动集中当前处理的那一行。游标即是指 向当前行的指针。 游标分类: • 滚动游标:游标的位置可以来回移动,可在活动 集中取任意元组。 • 非滚动游标:只能在活动集中顺序地取下一个元 组。 • 更新游标:数据库对游标指向的当前行加锁,当 程序读下一行数据时,本行数据解锁,下一行数 据加锁