幽灵学院 - 菜鸟起航从这里开始!

幽灵学院 - 中国最权威的网络安全门户网站!

当前位置: > 数据库 > DB2 >

SQL与过程化程序设计语言

SQL与过程化程序设计语言 SQL是一种典型的非过程化程序设计语言,这种语言的特点是: 只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这 些操作是如

SQL与过程化程序设计语言

  SQL是一种典型的非过程化程序设计语言,这种语言的特点是:
只指定哪些数据被操纵,至于对这些数据要执行哪些操作,以及这
些操作是如何执行的,则未被指定。非过程化程序设计语言的优点
在于它的简单易学,因此已经成为关系数据库访问和操纵数据的标
准语言。
? ? 与之相对应的是过程化程序设计语言,我们平常熟悉的各种高
级程序设计语言都属于这一范畴。这种语言的特点是:一条语句的
执行是与其前后的语句和控制结构(如条件语句、循环语句等)相
关的。与SQL相比,这些语言显得比较复杂,但优点是使用灵活,
数据操纵能力非常强大。
? ? 为了弥补SQL在过程化控制方面的不足,许多商用数据库系统,
都对标准SQL语言进行了扩充,增加了过程化控制部分,即所谓的
PL/SQL。当然不同的数据库系统所做的扩充程度是很不同的。
? ? 这里仅以SQL99/PSM为例(SQL99为对象关系型数据库的最新语
言标准),说明一个完整的PL/SQL应该具有哪些语言成分:
? ? BEGIN...END语句 —— 复合语句
? ? DECLARE语句 —— 变量声明语句(当然也包括游标、临时表、
异常条件等的声明)
? ? CALL语句 —— 函数调用语句
? ? RETURN语句 —— 函数返回语句
? ? SET语句 —— 赋值语句
? ? IF语句 —— 条件语句
? ? CASE语句 —— 条件分支语句
? ? LOOP语句 —— 循环语句1(相当于C中的WHILE(1))
? ? REPEAT语句 —— 循环语句2(相当于C中的DO...WHILE语句)
? ? WHILE语句 —— 循环语句3
? ? ITERATE语句 —— 跳转语句1(相当于C中的CONTINUE语句)
? ? LEAVE语句 —— 跳转语句2(相当于C中的BREAK语句)
? ? FOR语句 —— 迭代语句(相当于BAT中的FOR),即对由一游
标表示的数据集中的每一元素执行一组给定的操作。
? ? SIGNAL、RESIGNAL语句 —— 异常处理语句
? ? PL/SQL主要用于书写存储过程和触发器的动作体,由于是解释
执行,性能并不高,但也使得系统的强壮性比较有保障。当然,无
论是使用的灵活程度,还是表达式的复杂程度,这种语言同高级程
序设计语言(如C语言)相比还是相去甚远的。
? ? 因此,象ORACLE、DB2这样的数据库系统,对于一些性能要求
较高的任务,都允许在PL/SQL中直接使用以高级程序设计语言编写
的外部过程(通常是由嵌入式SQL实现的,好象只有DB2允许直接用
高级程序设计语言书写),当然如何编写这些外部过程,是有很多
限制的(例如DB2要求用户在使用前先设置所谓的“围栏”),这
取决于各种数据库系统的具体实现。
? ? 用高级程序设计语言,以编译执行方式来访问数据库,最大的
问题是如何保证数据库不会因应用的错误而崩溃。如何做到这一点,
并没有看上去那么简单,关于这方面的技术,已经超出了本文的讨
论范围。
? ? 最后,如果你想了解关于ORACLE系统的PL/SQL的详细使用细节,
请访问文档/PL-SQL
使用手册。
--
? ? 在那个洪水滔天的世界里,
? ? 正直的心感到了寂寞,
? ? 当理想终于被现实淹没时,
? ? 我选择了沉沦。

(责任编辑:幽灵学院)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片
栏目列表
推荐内容
1700055555@qq.com 工作日:9:00-21:00
周 六:9:00-18:00
  扫一扫关注幽灵学院