6.6.6 嵌入式SQL

文章目录

2个核心问题

SQL语句嵌入高级语言需要解决的2个核心问题是:如何识别嵌入语句?如何让主语言(比如C,C++语言)和SQL通信?

识别SQL语句

为了识别主语言中嵌入的SQL语句,会在SQL语句前加EXEC SQL,结尾添加什么,与SQL嵌入的主语言有关。如果嵌入PL/1或者C语言,结尾用';'。如果嵌入COBOL语言,结尾用END-EXEC。示例中是在C语言中嵌入SQL。

主语言和SQL通信

主语言与SQL通信有3种方式

  1. SQL通信区:向主语言传递SQL语句执行状态信息,使主语言根据此信息控制程序流程。
  2. 主变量:也叫共享变量,主语言通过主变量向SQL提供参数,主变量前加':',用于和SQL的属性名区分。如例子中的given_sno, Mname, Mage, Msex都是主变量。
  3. 游标:由于SQL语言是面向集合的,SQL的一条语句就会产生多条记录,而主语言是面向记录的,一组主变量只能存放一条记录。通过游标指针,可以决定获取哪条记录。

完整导图

相关推荐
timi先生11 小时前
语料库全栈项目部署 (Vue + Java + CQPweb)
java·前端·vue.js
PacosonSWJTU11 小时前
(转)mybatis拦截器
数据库·redis·mybatis
sunwenjian88611 小时前
Java进阶--IO流
java·开发语言
曲幽11 小时前
FastAPI + Celery 实战:异步任务的坑与解法,我帮你踩了一遍
redis·python·fastapi·web·async·celery·background·task·queue
客卿12311 小时前
滑动窗口--模板
java·算法
G探险者11 小时前
如何找到那些慢 SQL?
后端·sql
zjjsctcdl12 小时前
java与mysql连接 使用mysql-connector-java连接msql
java·开发语言·mysql
I'm Jie12 小时前
FastAPI 集成 Redis 开发手册
redis·fastapi
Moe48812 小时前
WebSocket :从浏览器 API 到 Spring 握手、Handler 与前端客户端
java·后端·架构
顶点多余12 小时前
线程互斥+线程同步+生产消费模型
java·linux·开发语言·c++