文档章节

PL/SQL程序设计(二)—— PL/SQL块结构和组成元素

o
 osc_4nmshwhm
发布于 2018/08/07 10:54
字数 1065
阅读 10
收藏 0

(一)PL/SQL块 

  PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分,其中执行部分是必须的。

PL/SQL块的结构如下:

PL/SQL块可以分成三类:

1、无名快:动态构造,只能执行一次。

2、子程序:存储在数据库中的存储过程、函数及包等。当在数据库建立好后可以在其他程序中调用它们。

3、触发器:当数据库发生操作时,会触发一些时间按,从而自动执行相应的程序。

(二)PL/SQL结构

  • PL/SQL块中可以包含子块

  • 子块可以位于PL/SQL中的任何部分

  • 子块也即PL/SQL中的一条命令

(三)标识符

PL/SQL程序设计中的标识符定义与SQL的标识符定义要求相同,要求和限制如下:

  • 标识符名不能超过30字符

  • 第一个字符必须为字母

  • 不分大小写

  • 不能用‘-’(减号)

  • 不能是SQL保留字

提示:一般不要把变量名声明与字段名完全一样,如果这样可能得到不正确的结果

 

变量命名在PL/SQL中有特别的讲究,建议在系统的设计阶段就要求所有编程人员共同遵守一定的要求,使得整个系统的文档在规范上达到要求。下面是建议的命名方法:

(四)PL/SQL变量类型

1、变量类型

2、复合类型

ORACLE在PL/SQL中除了提供像前面介绍的各种类型外,还提供了一种成为复合类型 —— 记录和表

(1)记录类型

记录类型是把逻辑相关的数据作为一个单元存储起来,称作PL/SQL RECORD的域,其作用是存放互不相同但逻辑相关的信息

语法:

DBMS_OUTPUT.PUT_LINE过程的功能类似与JAVA中的System.out.println();直接将结果输出到标准输出中

在使用上述过程之前必须将SQL*PLUS的环境参数SERVEROUTPUT设置为ON,否则将看不到输出结果:set serveroutput on

(2)使用%TYPE

定义一个变量,其数据类型与意境定义的某个数据变量的数据类型相同,或者与数据库表的某个列的数据类型相同,这是就可以使用%TYPE。

优点:

  • 所使用的数据库列的数据类型可以不必知道

  • 所引用的数据库列的数据类型可以实时改变

(3)使用%ROWTYPE

PL/SQL提供的%ROWTYPE操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。

优点:

  • 所引用的数据库中列的个数和数据类型可以不必知道

  • 所引用的数据库中列的个数和数据类型可以实时改变

 

 

(4)PL/SQL表(嵌套表)

PL/SQL程序可使用嵌套表类型创建具有一个或多个列和无限行的变量,这很像数据库中的表,声明嵌套表类型的一般语法如下:

在使用嵌套表之前必须先使用该集合的构造器初始化它,PL/SQL自动提供一个带有相同名字的构造器作为集合类型

嵌套表可以有任意数量的行,表的大小在必要时课动态地增加或减少:extend(x)方法添加x个空元素到集合末尾;trim(x)方法去掉集合末尾的x个元素

(五)运算符和表达式(数据定义)

1、关系运算符

2、一般运算符

 

 3、逻辑运算符

(六)变量赋值

在PL/SQL编程中,变量赋值只一个值得注意的地方,语法如下:

1、字符与数字运算特点

2、BOOLEAN复制

布尔值只有TURE,FALSE及NULL三个值

3、数据库赋值

数据库赋值是通过select语句来完成的,每次执行SELECT语句就赋值一次,一般要求被赋值的变量与SELECT找那个的列名要一一对应

4、可转化的类型赋值

(七)变量作用范围及可见性

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Vue-插槽slot/具名插槽

插槽的基本使用: <div id="app"> <cpn> <span>我是替换slot的元素1</span> </cpn>------------------------------------- <cpn2> <span>......

心田已荒
26分钟前
12
0
标准Android按钮具有不同的颜色 - Standard Android Button with a different color

问题: I'd like to change the color of a standard Android button slightly in order to better match a client's branding. 我想稍微更改标准Android按钮的颜色,以便更好地匹配客户的品......

技术盛宴
44分钟前
24
0
如何在Ruby中生成随机字符串 - How to generate a random string in Ruby

问题: I'm currently generating an 8-character pseudo-random uppercase string for "A" .. "Z": 我目前正在为“ A” ..“ Z”生成一个8个字符的伪随机大写字符串: value = ""; 8.times{......

法国红酒甜
今天
20
0
原价500元的认证证书,限时免费考取!

本文作者:y****n 百度云智学院致力于为百度ABC战略(人工智能、大数据、云计算)提供人才生态体系建设,包括基于百度ABC、IoT的课程体系,整合百度优势技术能力的深度学习技术、Apollo无人车...

百度开发者中心
昨天
17
0
在virtualenv中使用Python 3 - Using Python 3 in virtualenv

问题: Using virtualenv , I run my projects with the default version of Python (2.7). 使用virtualenv ,我使用默认版本的Python(2.7)运行项目。 On one project, I need to use Pyth......

富含淀粉
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部