akiraray 发表于 2013-2-5 02:15:48

Pro*C 基础教程-简化版_Vol5 基本增删改

前言

主要介绍基本的CRUD操作语句以及相关知识点。
 
数据插入

使用嵌入式INSERT语句一次插入一行或多行记录
一行记录

EXEC SQL INSERT INTO TALBE_NAME (XXX,XXX,XXX) VALUE (:xxx,:xxx,:xxx);
多行记录

EXEC SQL BEGIN DECLARE SECTION;
  char aaa;
  float bbb;
   int insert_rows;
EXEC SQL END DECLARE SECTION;
 
insert_rows=50;
EXEC SQL INSERT FOR :insert_rows
INSERT INTO TABLE_NAME(AAA,BBB)
VALUES (:aaa,:bbb);
 
几点说明


[*]往一张表中插记录,首先需要保证登录的用户有执行权限;
[*]FOR子句用于设置处理的数组元素数量,适用于INSERT,UPDATE,DELETE操作。FOR之后的一定需要是SQL宿主变量,而不可以为C语言的常量与字面值;
[*]使用数组时,WHERE子句后要不全部是标量,要不全部为数组,二者不可以混用。如果为标量,则ORACLE执行一次,如果为数组,则ORACLE对每一组数组元素执行一次INSERT语句。
[*]WHERE子句中的数组大小可以不同,在这种情况下:

[*]没有FOR子句时,由较小的数组维数决定;
[*]有FOR子句时,由其后的数组变量决定。

 
数据更新

使用嵌入式UPDATE语句更新数据库中的记录信息
更新一条记录

EXEC SQL UPDATE TABLE_NAME
SET AAA=:aaa
WHERE BBB=:bbb
更新一组记录

char bbb;
float aaa;
 
EXEC SQL UPDATE TABLE_NAME
SET XXX=:aaa WHERE BBB=:bbb
 
几点说明


[*]执行更新时,必须有执行权限
[*]使用数组时,WHERE子句后要不全部是标量,要不全部为数组,二者不可以混用。如果为标量,则ORACLE执行一次,如果为数组,则ORACLE对每一组数组元素执行一次UPDATE语句。
[*]WHERE子句中的数组大小可以不同,在这种情况下:

[*]没有FOR子句时,由较小的数组维数决定;
[*]有FOR子句时,由其后的数组变量决定。

[*]累计修改的行数在SQLCA的SQLERRD中返回
[*]如果没有满足条件的记录被更新,则返回错误信息
 
数据删除

使用嵌入式DELETE语句,删除数据库中的记录信息
简单删除

EXEC SQL DELETE FROM TABLE NAME WHERE XXX=:xxx;
 
光标删除

/*声明游标*/
EXEC SQL DECLARE tmp_cursor for SELECT ….
/*打开当前游标*/
EXEC SQL OPEN tmp_cursor ;
/*执行FETCH 动作*/
EXEC SQL FETCH tmp_cursor INTO:xxx,:yyy;
EXEC SQL DELETE FROM TABLE_NAME
  WHERE CURRENT OF tmp_cursor;
 
使用数组删除

int number;
 
EXEC SQL DELETE FROM TABLE_NAME WHERE XXX=:xxx;
 
几点说明


[*]首先需要拥有相应表的删除权限
[*]使用数组时,WHERE子句后要不全部是标量,要不全部为数组,二者不可以混用。如果为标量,则ORACLE执行一次,如果为数组,则ORACLE对每一组数组元素执行一次DELETE语句。
[*]WHERE子句中的数组大小可以不同,在这种情况下:

[*]没有FOR子句时,由较小的数组维数决定;
[*]有FOR子句时,由其后的数组变量决定。

[*]如果没有满足DELETE的条件的行被删除,则返回"NOT FOUND"错误码
[*]SQLCA中的SQLERRD返回删除的累计行数。 
页: [1]
查看完整版本: Pro*C 基础教程-简化版_Vol5 基本增删改