事务控制语句
commit, rollback and savepoint. exec sql commit; exec sql commit work release; exec sql rollback work release;
数据定义语句(ddl)
create, alter, drop
exec sql creat table t1(cola int); exec sql drop table t1; exec sql alter table t1 add(faxno number);
注意:对象名, 列名不能用宿主变量.`
自动提交事务
alter: alter table emp add( faxno number ); analyze: analyze table
数据操作语句(dml)
exec sql select …….; exec sql insert …….; exec sql update …….; exec sql delete …….;
用单个变量操作单行单列
char ename[35]; int empno=20; exec sql select emp_name into :ename from emp where emp_no=:empno; cout<<“the name is “<< ename;
注意:
字符串长度定义
指示变量的运用
用多个变量操作单行多列
变量顺序与字段名一至
char v_name[31], char v_job[21]; float v_salary; int empno=20; exec sql select emp_name,job,salary into :v_name,:v_job,:v_salary from emp where emp_no=:empno; cout<用结构(struct )操作单行多列宿主结构是指包含多个宿主变量的c语言结构,以此可简化单行多列操作。
struct{ int no; char name[10]; int salary; }emp_record;输入:
exec sql insert into emp(empno,ename,sal) values (:emp_record);
输出:
exec sql select empno,ename,sal into :emp_record where rownum=1;注意:
1.可用结构pointer,但要分配空间。
2.结构成员的数据类型,顺序必须与sql语句一至。
3.不能用嵌套的结构。
4.不能用c联合(union)struct{ int no; char name[10]; int salary; }*emp_record; emp_record = (struct emp_record *)malloc(sizeof(struct emp_record )); exec sql select empno,ename,sal into :emp_record where rownum=1;用数组(array)操作多行多列
为了降低网络开销,提高程序性能。
数组和 insert 语句
int num[100]; float salary[100]; char name[100][25]; /** 在此为array赋值 **/ exec sql insert into emp(empno,ename,sal) values (:num, :name, :salary);数组和 update / delete 语句
char name[100]; float salary[100]; …….. /** 在此为array赋值 **/ exec sql update emp set sal=:salary where ename=:name; char name[100]; …….. /** 在此为array赋值 **/ exec sql delete from emp where ename=:name;数组和 select 语句
char name[100][25]; exec sql select ename into :name from emp where dept_num=2; for(int j=0;j注意事项:
1.只有char 和 archar 可为二维数组。 2.如数组index不同,按最小操作。 3.在select语句的where子句中,不能用数组。 4.数组元素最大值:32767
<>