数据库-嵌入SQL访问接口

嵌入式SQL(Embedded SQL) 是一种将SQL语句直接写入某些高级程序语言,如C、 COBOL、Java、Ada等编程语言的源代码中的方法。借此方法,可使得应用程序拥有了访问数 据以及处理数据的能力。

在SQL86规范中定义了对于COBOL、FORTRAN、PI/L等语言的嵌入式SQL的规范。在SQL89规范中,定义了对于C 语言的嵌入式SQL的规范。一些大型的数据库厂商发布的数据 库产品中,都提供了对于嵌入式SQL的支持,如Oracle、DB2等。

在这一方法中,将SQL文嵌入的目标源码的语言称为宿主语言。

提供对于嵌入式SQL的支持,需要数据库厂商除了提供DBMS之外,还必须提供一些工 具。为了实现对于嵌入式SQL的支持,技术上必须解决以下问题。

(1)宿主语言的编译器不能识别和接受SQL程序,需要解决如何将SQL的宿主语言源代 码编译成可执行码。

(2)宿主语言的应用程序如何与DBMS之间传递数据和消息。

(3)如何把对数据的查询结果逐次赋值给宿主语言程序中的变量,以供其处理。

(4)数据库的数据类型与宿主语言的数据类型有时不完全对应或等价,如何解决必要的数 据类型转换问题。

为了解决上述这些问题,数据库厂商需要提供一个嵌入式SQL的预编译器,把包含有嵌入 式SQL的宿主语言源码转换成纯宿主语言的代码。这样一来,源码即可使用宿主语言对应的编 译器进行编译。通常情况下,经过嵌入式SQL的预编译之后,原有的嵌入式SQL会被转换成 一系列函数调用。因此,数据库厂商还需要提供一系列函数库,以确保链接器能够把代码中的 函数调用与对应的实现链接起来。

嵌入式SQL中除了可以执行标准SQL程序之外,为了对应嵌入的需要,还增加了一些额 外的语法成分。主要包括宿主变量使用声明、数据库访问、事务控制、游标操作的语法等。

相关推荐
保卫大狮兄34 分钟前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
亚历克斯神39 分钟前
智能搜索系统的升级复盘——从 Elasticsearch 到混合检索的检索质量提升
java·spring·微服务
数据安全技术观察1 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库
金銀銅鐵1 小时前
[Java] 一个方法最多可以有多少个入参?
java·jvm
小席是个热心肠2 小时前
Redis的自我学习
数据库·redis·学习
哭哭啼2 小时前
JAVA服务问题诊断
java·开发语言·jvm
2601_965798472 小时前
Salient Theme Setup Guide for Fast Creative WordPress Sites
数据库·web3·php·wordpress
Sayuanni%32 小时前
SpringBoot 从注解到源码:核心知识点总结
java·spring boot·后端
@Mike@3 小时前
09-数据库学习笔记(数据库索引与过滤器)
数据库·笔记
坚定信念,勇往无前3 小时前
Maven 私有仓库-nexus
java