• 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;
  • 相关阅读:
    常用的PHP图形处理函数
    PHP常用文件操作函数
    PHP常用正则表达式函数浅析
    PHP类常量的常见访问方法
    使用PDO操作MySQL
    js数组的遍历方法,维持索引?splice与forEach && 孤儿对象形成,造成内存泄漏,置空等待垃圾回收
    [DOM] Input elements should have autocomplete attributes (suggested: "new-password"): (More info: https://goo.gl/9p2vKq)
    $(...).get(...).addClass is not a function
    使用淘宝镜像的命令
    对象、数组与JSON字符串之间的转换
  • 原文地址:https://www.cnblogs.com/jszfy/p/15955797.html
Copyright © 2020-2023  润新知