第二章 编写ESQL/C程序
FROM TableList [WHERE查询条件]
例子:
EXEC SQL select * into :custrec from customer
where customer_num = : cust_num;
其中custrec的域与customer表中的列的结构一一对应。ESQL/C程序中的SELECT语句只能处理返回一行数据的情况。若SELECT语句返回多行数据,则要使用游标来处理。
当从数据库取来的数据出现异常时,这里的异常指某列返回空值或数据发生截断,在INFORMIX ESQL/C中可以定义指示变量来检测。
指示变量是宿主变量的一种,它用于检测SQL语句中数据出现的异常。通常定义为short类型。使用方式为:
a.要检测的宿主变量:指示变量
b.要检测的宿主变量INDICATOR指示变量
例如:
EXEC SQL begin declare section; char fname[15], lname[15]; short fname_ind, lname_ind; long cnum;
EXEC SQL end declare section; cnum = 101;
EXEC SQL select fname, lname
into :fname :fname_ind, :lname :lname_ind from customer
where customer_num = :cnum;
当数据发生截断时,如果是字符型数据,则指示变量的值为截断前的字符串长,如果是数值型转换成字符串型,则指示变量的值大于0,sqlca.sqlwarn0=w,表示警告。当传进一个NULL值时,指示变量的值小于0。没有异常发生,指示变量的值为0。根据指示变量的值,程序员可以作出相应的处理。
(3)UPDATE语句
UPDATE一般形式是: UPDATE表名
SET {column-name=expr[,...]| {(column-list)|*}= (value-list)} [WHERE{condition|
CURRENT OF cursor-name}]
15
第二章 编写ESQL/C程序
例子:
EXEC SQL update customer
set (fname, lname)=(:fname, :lname) where customer_num=:cust_num;
WHERE后接CURRENT OF是使用了游标的情况,语句的含义为:更新游标指向的当前行。
(4)DELETE语句
DELETE语句的一般形式为: DELETE FROM表名 WHERE条件
例子:
EXEC SQL delete from orders
where customer_num = custemer_num;
16