Oracle ProC编程、嵌入SQL

C语言采用嵌入式方式操作数据库

概念

在混合编程中,

嵌入SQL的高级语言称为主语言/宿主语言

SQL语句负责操作数据库

高级语言语句负责控制程序流程


 预编译方法

由DBMS的预处理程序对源程序扫描,识别出SQL语句,

将它们转换成主语言调用语句,使主语言编译器能识别它,

最后由主语言编译器将整个源程序编译成目标码。


格式

所有嵌入式SQL必须加前缀:EXEC SQL

EXEC SQL <SQL语句>

 嵌入式SQL与主语言的通信

1:向主语言传递SQL语句执行状态信息【状态信息】,使语言能据此信息控制程序流程,用SQL通信区(SQLCA)实现。

2:主语言向SQL语句提供参数,主要用主变量实现。

3:将SQL语句查询数据库的结果交给主语言进一步处理,主要用主变量游标实现。


 SQL通信区

 存放执行SQL语句后返回代码的变量SQLCODE

SUCCESS、错误代码


 主变量

  •  主变量可以是输入主变量,也可以是输出主变量。
  • 主变量定义的位置必须在:

EXEC SQL BEGIN DECLARE SECTION;
主变量(int i=0;......)
EXEC SQL END DECLARE SECTION;

EXEC SQL BEGIN DECLARE SECTION;
  struct MWIPLOTSTS_N_TAG MWIPLOTSTS_N;
EXEC SQL END DECLARE SECTION;
  • SQL语句中的主变量名必须加冒号,SQL语句外不用

游标

【定义--打开--推进--关闭--释放游标】

//定义游标

EXEC SQL DECLARE DBU_MWIPLOTSTS_CUR_1 CURSOR FOR
SELECT LOT_ID, FACTORY, MAT_ID,
  FROM MWIPLOTSTS
 WHERE FACTORY = :MWIPLOTSTS_N.FACTORY

//打开游标

EXEC SQL OPEN DBU_MWIPLOTSTS_CUR_1;

//推进游标

EXEC SQL FETCH DBU_MWIPLOTSTS_CUR_1 INTO
  :MWIPLOTSTS_N.LOT_ID,
  :MWIPLOTSTS_N.LOT_DESC,
  :MWIPLOTSTS_N.FACTORY 

  //关闭游标

EXEC SQL CLOSE DBU_MWIPLOTSTS_CUR_1;

//释放游标

EXEC SQL FREE DBU_MWIPLOTSTS_CUR_1;

 事务

【开始--提交--回滚】

EXEC SQL BEGIN WORK;
EXEC SQL COMMIT WORK;
EXEC SQL ROLLBACK WORK;

 

posted on 2022-03-02 16:33  青柠锦鲤  阅读(209)  评论(0编辑  收藏  举报