1、概念

SQL提供了将SQL语句嵌入到某种高级语言中的使用方式,通常采用预编译的方法将SQL语句嵌入高级语言中。采用的方法由DBMS的预处理程序对源程序进行扫码、识别出SQL语句,把它们转换为主语言调用语句,这样可以让主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。

2、SQL嵌入主语言涉及的几个问题

区分主语言语句与SQL语句:通常在SQL语句前加前缀EXEC SQL,结束标志会跟着主语言不同而不同。

主语言工作单元与数据库工作单元的通信机制

1、SQL通信区:向主语言传递SQL语句执行状态信息,使主语言能够根据此信息控制程序流程。

2、主变量:也成为共享变量。主语言向SQL语句提供参数主要通过主变量,主变量由主语言的程序定义,并用SQl的DECLARE语句说明。比如C语言中用法:

exec sql begin delcare p
char sno[4],cno[3]
int grade;
char sqlstate[7]
exec sql end declare p

根据共享变量givesno值查询学生关系students 中的学生姓名、年龄、性别

exec sql select sname,age,sex
into :Msno,:Mcno;givensno
from studnets
where sno:Msno;

3、游标

SQl语言主要是面向集合的,一条SQL语句可产生或处理多条记录。而主语言是面向记录的,一组主变量一次只能放一条记录,因此引入游标,通过移动游标指针来决定获取那一条记录。

3.1 定义游标:

exec sql declare<游标> cursor for <select 查询语句>
endexec

3.2 打开游标

exec sql open <游标名> endexec

该语句执行游标定义中的select语句,同时游标处于活动状况。游标是一个指针,此时指向查询结构的第一行之前。

3.3 推进游标

exec sql fetch from <游标名> into <变量表> endexec

该语句使用时,游标推进一行,并把游标指向的行中的值取出来,送到共享变量中去。

3.4 关闭游标

exec sql close <游标名> endexec

3.5游标完整例子

---游标更新删除当前数据
---1.声明游标
declare orderNum_03_cursor cursor scroll
for select OrderId ,userId from bigorder where orderNum='ZEORD003402'
--2.打开游标
open orderNum_03_cursor
--3.声明游标提取数据所要存放的变量
declare @OrderId int ,@userId varchar(15)
--4.定位游标到哪一行
fetch First from orderNum_03_cursor into @OrderId,@userId  --into的变量数量必须与游标查询结果集的列数相同
while @@fetch_status=0  --提取成功,进行下一条数据的提取操作 beginif @OrderId=122182beginUpdate bigorder Set UserId='123' Where Current of  orderNum_03_cursor  --修改当前行endif @OrderId=154074beginDelete bigorder Where Current of  orderNum_03_cursor --删除当前行endfetch next from orderNum_03_cursor into @OrderId ,@userId --移动游标end

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

SQL语言:嵌入式SQL知识笔记相关推荐

  1. MySQL,Oracle系统学习,以及SQL语言-----数据库篇学习笔记

    Handouts MySQL和Oracle系统学习 一. 开篇立意(~~~~必看,有说明~~~~) 二. Oracle 篇 数据库存在之意义 基础概念(必须看,后面不会说明!!!) Oracle管理系 ...

  2. 【ORACLE SQL 语言】SQL语言四大类

    SQL语言共分为四大类 数据查询语言DQL 数据操纵语言DML 数据定义语言DDL 数据控制语言DCL. 数据查询语言DQL 数据查询语言DQL用于检索数据库.其基本结构是由SELECT子句,FROM ...

  3. SQL语言NULL用法学习笔记 (源自《SQL基础教程第2版》MICK 、孙淼、罗勇)

    一.算术运算(+.-. *. /) 包含NULL的算术运算中,不会报错且结果均为NULL.如: 5 + NULL: NULL / 9 ; NULL / 0 结果均为NULL 二.比较运算(=.< ...

  4. 程序语言的组成知识笔记

    程序语言的基本成分包括数据'运算.控制.传输. 1.程序语言的数据成分 数据成分指程序中的数据对象,数据是程序程序操作的对象,具有存储类型.数据类型.数据名称.作用域.生存周期等属性. 1.1 常量和 ...

  5. 程序语言的概念知识笔记

    1.低级语言和高级语言 计算机指令程序:0.1 组成的机器指令序列.特点:效率低.可读性差.难以维护. 汇编指令:用常用的符号代替0.1 序列来 表示机器指令,例如用ADD表示加法. 高级语言:面向对 ...

  6. oracle sqlplus 创建表,如何使用SQL语言在SQL*Plus中创建表

    在Oracle中,通常通过两种方法来创建,一种方法是使用OEM图形化管理工具来创建,另一种方法是在SQL*Plus中执行SQL语句来实现. 这里主要说用SQL语句创建. 使用SQL*Plus语句创建表 ...

  7. 《你必须知道的495个C语言问题》知识笔记及补充

    1. extern在函数声明中是什么意思? 它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中,但在 extern int f(); 和 int f(); 之间并没有实质的区别. 补充:ex ...

  8. MySQL 笔记3 -- SQL 语言

    MySQL 笔记3 – SQL 语言 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 一. SQL语言规范 S ...

  9. 数据库系统——第九讲 嵌入式SQL语言之基本技巧

    数据库系统--第九讲 嵌入式SQL语言之基本技巧 嵌入式SQL语言概述 (1)交互式SQL语言的局限 (2)嵌入式SQL语言 (3)高级语言中使用嵌入式SQL语言需要解决的问题 变量声明与数据库连接 ...

  10. 使用程序设计语言访问SQL:JDBC、从Python访问数据库、ODBC、嵌入式SQL

    SQL 提供了一种强大的声明式查询语言.用 SQL 编写查询通常比用通用程序设计语言同样的查询进行编码要简单得多.然而,基于至少两种原因数据库程序员必须能够访问通用程序设计语言: 1.因为 SQL 并 ...

最新文章

  1. Make Games with Python Pygame (2)
  2. adaboost和GBDT的区别以及xgboost和GBDT的区别
  3. html 加粗_若想学前端开发,要从HTML基本元素开始第一节
  4. WinAPI: midiOutCachePatches - 预装音色
  5. 收获,不止SQL优化——抓住SQL的本质--第一章
  6. 厉害|高通正利用“AI Engine”加速AI从云端走向终端应用和落地!
  7. Flash与数学:圆(2)
  8. Java static , final和常量设计
  9. java xml类型_java 解析String类型的xml
  10. 通用采集器Modbus协议应用
  11. C语言进行可视化编程
  12. PHP集成环境:这些年我用过的那些PHP环境
  13. laravel之生成PDF文档-TCPDF
  14. js对象扁平化:Javascript对象进行扁平化处理
  15. 使用wine在mac系统上运行windows程序
  16. 计算机专业会涉及数学吗,数学不好的人还适合学计算机吗?
  17. springboot下载excel(解决文件损坏问题)
  18. 《云计算和大数据时代网络技术揭秘》读后感
  19. 勃林格殷格翰在华开启马业务,中国首个进口马专用药物骏卫保获批
  20. 自动上色论文《Deep Exemplar-based Colorization》(1)

热门文章

  1. Web服务器故障的奇怪原因
  2. 跨时钟域电路设计——多bit信号FIFO
  3. halcon write_ocr_class_svm 将OCR分类器写入文件
  4. 比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍
  5. 弧焊 不同气体对焊缝的影响 100二氧化碳 15%氩气CO2混合
  6. 学习笔记01:1.1 基于概率的信任
  7. 物理竞赛得奖学计算机,物理竞赛林紫琪带你探索清华学堂计算机科学实验班”(姚班)...
  8. 最常见的读入数据方法集锦
  9. linux 客户机中不支持 unity_婚姻中的不理解,来源于夫妻双方情感支持的不同
  10. python编程单词排序_Python实现对文件进行单词划分并去重排序操作示例