Exec sql/c【嵌入SQL】

概念:

利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。

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

在混合编程中,SQL语句负责操作数据库,高级语言语句负责控制程序流程。

预编译方法

由DBMS的预处理程序对源程序扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译器能识别它,最后由主语言编译器将整个源程序编译成目标码。

☆嵌入式SQL的一般形式

所有的嵌入式SQL语句都必须加前缀EXEC SQL

在C语言中: EXEC SQL

例如:EXEC SQL DROP TABLE Student;

☆嵌入式SQL与主语言的通信

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

2:主语言向SQL语句提供参数,主要用主变量(Host Variable)实现;

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

☆SQL通信区

SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE。

每次执行完SQL语句后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理,如果SQLCODE等于预定的常量SUCCESS,则表示SQL语句成功,否则在SQLCODE中存放错误代码。

SQLCA(SQL Communication Access) 系由系统提供之系统记录架构,作为back end与 front end 之间沟通之用,当发生 I/O 状态时,系统会记录该状态于SQLCA 中,front end 即可依据其其内容得知 I/O 运作是否成功,再决定往后执行的步骤。SQLCA 为系统定义之 GLOBAL变量,以下为其架构并介绍其内容与用途:

SQLCA结构

DEFINE SQLCA RECORD

SQLCODE INTEGER,

SQLERRM CHAR(71),

SQLERRP CHAR(8),

SQLERRD ARRAY[6] OF INTEGER,

SQLAWARN CHAR(8)

END RECORD

.SQLCODE 表示 I/O 的结果 ;

返回值说明0 表示 I/O 成功 100表示 NOTFOUND< 0I/O 失败

.SQLERRM :保留未用

.SQLERRP :保留未用

.SQLERRD :为一个含有6个INTEGER数组

SQLERRD[1]:保留未用

SQLERRD[2]:新增时 SERIAL 字段所传回之值

SQLERRD[3]:处理资料的笔数

SQLERRD[4]:查询时预估的 CPU COST

SQLERRD[5]:SQL指令之错误位移

SQLERRD[6]:最后一个 ROWID 值

.SQLAWARN :含有8个字符记录I/O时产生的警告讯息

为一个含有8个字符的字符串,以记录I/O时产生的警告讯息。若正确无误,则相对应之字符设定为空白,否则会被设定为"W"。

SQLAWARN[1]:若第2至第8字符中任意一个被设成"W",则此字符亦为"W",否则为空白。

SQLAWARN[2]:若资料太长而被截掉时,会被设成 "W"。

SQLAWARN[3]:若 aggregate function(如 SUM,AVG,MAX,MIN) 处理时遇到 NULL 值,则会被设成"W"。

SQLAWARN[4]:若查询时,若欲查询的字段数目和 INTO 之变量数目不合时,会被设成 "W"。

SQLAWARN[5]:如转换 float 成 integer 时,则会被设成 "W"。

SQLAWARN[6]:保留未用

SQLAWARN[7]:保留未用

SQLAWARN[8]:保留未用

☆ 主变量

一个主变量既可是输入主变量也可是输出主变量。

主变量必须在SQL语句EXEC SQL BEGIN DECLARE SECTION与EXEC SQL END DECLARE SECTION之间进行说明。

例如:

EXEC SQL B

c语言 exec sql编程,C语言采用嵌入式方式操作数据库exec_sql.doc相关推荐

  1. c语言 源程序代码,编程(C语言源程序代码)

    编程(C语言源程序代码) 已知 S=1+1/(1+2)+1/(1+2+3)+-+1/(1+2+3+-+N) ,当N的值为50时,求S的值. 要求:按四舍五入的方式精确到小数点后第四位. #includ ...

  2. jdy40程序C语言,lr脚本编程C语言.docx

    lr脚本编程C语言.docx 1.define COUNT 100define SALARY 4000Actionint total;totalCOUNT*SALARY;lr_output_messa ...

  3. SQL Server 使用Detach和Attach 方式 移动数据库位置

    数据库备份和权限等云云的概念就不介绍了, 直接进入主题操作了 环境: 1. 服务器 SQL Server 2005 2.  客户端工具: SQL Server Management Studio 3. ...

  4. 数据库SQL Server2012笔记(八)——Statement与PreparedStatement的区别,JDBC方式操作数据库...

    1.Statement与PreparedStatement的区别 1)都可用于  把sql语句从java程序中发送到制定数据库,并执行sql语句. 2)区别 直接使用Statement,驱动程序一般不 ...

  5. c语言i o编程,C 语言输入输出 (I/O)

    C 语言输入输出 (I/O) 在本教程中,您将学习如何使用scanf()函数从用户处获取输入,并使用printf()函数向用户显示输出. C 语言输出 在C语言编程中,printf()是主要的输出函数 ...

  6. python语言支持函数式编程_Python语言之Pyhton入门笔记函数式编程

    本文主要向大家介绍了Python语言之Pyhton入门笔记函数式编程,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一,匿名函数 def add(x,y) return x+y ...

  7. c 语言 结构体 编程,C语言:结构体的编程问题(很简单)

    C语言:结构体的编程问题(很简单) 答案:2  信息版本:手机版 解决时间 2020-07-25 02:18 已解决 2020-07-24 02:27 先定义一个结构体Student,它包含四个成员: ...

  8. c语言的高级编程,C语言高级编程

    Q:如何提问,能得到快速的解答? A: 1)标题:撰写标题时,要注意把要问的问题的出处和核心词写出来,最好用[]标出来,比如[第1周编程题在线测试的第1题]求解. 2)内容:内容上要把你不懂的地方说出 ...

  9. 手机c语言多文件编程,C语言多文件编程

    今天,IT培训网小编为大家总结的是C语言,C语言多模块开发(多文件编程). 目前为止,我们编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,对于只有几百行的小程序来说这或许可以接受 ...

  10. 基于c语言测井原始数据编程,C语言对数据库文件的信息压缩

    C语言对数据库文件的信息压缩 在信息处理中,信息量越来越大,为节省资源,有必要对所存储的信息进行压缩.下面介绍用C语言实现数据库文件信息压缩的方法. 数据库文件的存储结构中,库结构部分由多个定长字节( ...

最新文章

  1. 慕课的原型图快速变html,分享一个html转换为pdf 利器 Pechkin
  2. logging日志配置,day95下午
  3. gprof + kprof + gprof2dot (性能 与 函数调用图)-
  4. 非线性方程组求解Matlab实现 (多元牛顿方法、Broyden方法、Broyden方法2)
  5. SDL及扩展库在ARM-Linux 完整移植
  6. round四舍五入详解--python2与python3版本间区别
  7. 为什么计算机的编码那么多,为什么中国剩余定理可用于计算机编码?
  8. 地域跨度入手的8zsb
  9. java8(2)函数式接口
  10. 后台返回整个html转换成页面链接,利用html5的history.replaceState修改当前页面的URL...
  11. java设计模式--基础思想总结--抽象类与架构设计思想
  12. MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart...
  13. ubuntu 16.04 64位 搭建GenieACS
  14. Fiddler证书过期解决
  15. 过期系统激活 win7
  16. go语言读取xls表格xls文件操作替代解决方案
  17. 解决“UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xd0 in position 493: illegal multibyte sequen“
  18. 智能头盔 Livall携全球首款智能骑行头盔亮相CES
  19. MySQL报错:Incorrect string value: '\xE6\x9D\x82\xE8\xB4\xA7...' for column
  20. 《python编程从入门到实践》第2版 第四章课后练习

热门文章

  1. JLA服务器性能测试,Shell脚本 | 性能测试之CPU占有率
  2. Java/JVM垃圾回收机制和算法总结
  3. java 破解版 aspose-word 切图
  4. python字符类型是英文_Python中常见数据类型
  5. linux技术--MySQL分区
  6. Cryengine5.3
  7. linux获取本机ip地址函数,Linux编程获取本机IP地址
  8. iOS应用安全-专栏总目录(持续更新) 丨蓄力计划
  9. 2019年开发者必读!20位阿里技术大牛们帮你列了一份经典书单!
  10. python动物农场小说网站爬虫_中文编程,用python编写小说网站爬虫