事务控制语句
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);
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;
指示变量的运用
用多个变量操作单行多列
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 )操作单行多列
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;
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)操作多行多列
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
2.如数组INDEX不同,按最小操作。
3.在SELECT语句的WHERE子句中,不能用数组。
4.数组元素最大值:32767.sqlerrd[2];j++)>
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.sqlerrd[2];j++)>