安川服务器读取当前位置值,当前位置

四、建立和关闭数据库连接

建立数据库连接格式如下:

EXEC SQL CONNECT

TO target [AS connection-name] [USER user-name];

target是要连接的数据库服务器,可采用如下几种方式:

常见的服务器标识串,如@:;

包含服务器标识的SQL串常量;

DEFAULT。

connect-name是可选的连接名,连接必须是一个有效的标识符。在整个程序内只有一个连接时可以不指定连接名。

关闭数据库连接,格式如下:

EXEC SQL

DISCONNECT [connection];

程序运行过程中可以修改当前连接,格式如下:

EXEC SQL

SET CONNECTION connection-name | DEFAULT;

8.1.3不用游标的SQL语句

不用游标的SQL语句主要有:

说明性语句

数据定义语句

数据控制语句

查询结果为单记录的SELECT语句

非CURRENT形式的增删改语句

一、查询结果为单记录的SELECT语句

这类语句不需要使用游标,只需要用INTO子句指定存放查询结果的主变量。

[例1]

根据学生号码查询学生信息。已经把要查询的学生的学号赋给了主变量givensno。

EXEC SQL SELECT

Sno,Sname,Ssex,Sage,Sdept

INTO :Hsno,:Hname,:Hsex,:Hage,:Hdept

FROM Student

WHERE

Sno=:givensno;

(1)INTO子句、WHERE子句和HAVING短语的条件表达式中均可以使用主变量。

(2)查询返回的记录中,可能某些列为空值NULL,这时需使用指示变量。

(3)如果查询结果实际上并不是单条记录,而是多条记录,则程序出错,RDBMS会在SQLCA中返回错误信息。

[例2]

查询某个学生选修某门课程的成绩。已经把将要查询的学生的学号赋给了主变量givensno,将课程号赋给了主变量givencno。

EXEC SQL SELECT

Sno,Cno,Grade

INTO :Hsno,:Hcno,:Hgrade:Gradeid

/*指示变量Gradeid*/

FROM SC

WHERE Sno=:givensno AND Cno=:givencno;

如果Gradeid

< 0,不论Hgrade为何值,均认为该学生成绩为空值。

二、非CURRENT形式的增删改语句

在UPDATE的SET子句和WHERE子句中可以使用主变量,SET子句还可以使用指示变量。[例3]

修改某个学生选修1号课程的成绩。

EXEC SQL

UPDATE SC

SET

Grade=:newgrade       /*修改的成绩已赋给主变量*/

WHERE

Sno=:givensno;     /*学号赋给主变量givensno*/

[例4]

将计算机系全体学生年龄置NULL值。

Sageid=-1;

EXEC SQL

UPDATE Student

SET Sage=:Raise:Sageid

WHERE Sdept=‘CS’;

将指示变量Sageid赋一个负值后,无论主变量Raise为何值,RDBMS都会将‘CS’系所有学生的年龄置空值。等价于:

EXEC SQL

UPDATE Student

SET Sage=NULL

WHERE Sdept=‘CS';

[例5]

某个学生退学了,现要将有关他的所有选课记录删除掉。假设该学生的姓名已赋给主变量stdname。

EXEC SQL

DELETE

FROM SC

WHERE Sno=

(SELECT Sno

FROM Student

WHERE Sname=:stdname);

[例6]

某个学生新选修了某门课程,将有关记录插入SC表中。假设插入的学号已赋给主变量stdno,课程号已赋给主变量couno。

gradeid=-1;

/*用作指示变量,赋为负值*/

EXEC SQL

INSERT

INTO SC(Sno,Cno,Grade)

VALUES(:stdno,:couno,:gr:gradeid);

由于该学生刚选修课程,成绩应为空,所以要把指示变量赋为负值。

8.1.4使用游标的SQL语句

必须使用游标的SQL语句包括:

查询结果为多条记录的SELECT语句

CURRENT形式的UPDATE语句

CURRENT形式的DELETE语句

一、查询结果为多条记录的SELECT语句

使用游标的步骤如下:

1.说明游标

使用DECLARE语句,语句格式如下:

EXEC SQL DECLARE

CURSOR FOR ;

它是一条说明性语句,只是说明了游标与SELECT语句相关联,RDBMS并不执行SELECT指定的查询操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值