PL/SQL的几个概念区别

  1:char 和 varchar2的区别:

  varchar2 :variable-length 变长

  char : fixed-length 固定长度

  char定义的时候分配内存,而varchar2动态分配内存

  下面一个例子明确的说明了这两个的区别 :

  SQL> DECLARE

  2 c CHAR(32767) := ' ';

  3 v VARCHAR2(32767) := ' ';

  4 BEGIN

  5 dbms_output.put_line('c is ['||LENGTH(c)||']');

  6 dbms_output.put_line('v is ['||LENGTH(v)||']');

  7 v := v || ' ';

  8 dbms_output.put_line('v is ['||LENGTH(v)||']'); END;

  9 /

  c is [32767]

  v is [1]

  v is [2]

  PL/SQL 过程已成功完成。

  输出的结果显示:CHAR类型变量在定义的时候分配内存,分配的内存也可能超过变量定义的大小,VARCHAR2类型变量动态分配内存,根据设置的变量的大小。

  下面的例子也说明这一点:

  SQL> DECLARE

  2 c CHAR(32767) := ' ';

  3 v VARCHAR2(32767) := ' ';

  4 var1 CHAR := ' '; -- Implicitly sized at 1 byte.

  5 var2 CHAR(1) := ' '; -- Explicitly sized at 1 byte.

  6 var3 CHAR(1 BYTE) := ' '; -- Explicitly sized at 1 byte.

  7 var4 CHAR(1 CHAR) := ' '; -- Explicitly sized at 1 character.

  8 BEGIN

  9 dbms_output.put_line('c is ['||LENGTH(c)||']');

  10 dbms_output.put_line('v is ['||LENGTH(v)||']');

  11 dbms_output.put_line('var1 is ['||LENGTH(var1)||']');

  12 dbms_output.put_line('var2 is ['||LENGTH(var2)||']');

  13 dbms_output.put_line('var3 is ['||LENGTH(var3)||']');

  14 dbms_output.put_line('var4 is ['||LENGTH(var4)||']');

  15 v := v || ' ';

  16 dbms_output.put_line('v is ['||LENGTH(v)||']'); END;

  17 /

  c is [32767]

  v is [1]

  var1 is [1]

  var2 is [1]

  var3 is [1]

  var4 is [1]

  v is [2]

  2:character 和 char的区别:

  CHARACTER类型是CHAR的subtype,CHARACTER类型和它的基类优相同的大小,在CHAR和CHARACTER数据类型之间隐式转换。以下是一个subtype的定义:

  SUBTYPE subtype_name IS base_type[(maximum_size [BYTE | CHAR])] [NOT NULL];

  应用例子:

  SQL> DECLARE

  2 SUBTYPE code IS CHAR(1 CHAR);

  3 c CHAR(1 CHAR) := 'A';

  4 d CODE;

  5 BEGIN

  6 d := c;

  7 END;

  8 /

  PL/SQL 过程已成功完成。

时间: 2024-09-09 22:07:25

PL/SQL的几个概念区别的相关文章

Oracle PL/SQL入门案例实践_oracle

正在看的ORACLE教程是:Oracle PL/SQL入门案例实践. 前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解. 一. 案例介绍 某数据库有两张表,是关于某公司员工资料.薪水和部门信息的,它们分别是emp表和dept表,两张表的结构如下: 要求如下: 1.按照上表结构建立相应的表,并每张表写入5组合法数据. 2.操纵相关表,使得"技术部"的员工的薪水上涨20%. 3.建立日志,追踪薪水变动情况. 4.建立测试包. 二. 案例的分析与实现 从前

Oracle PL/SQL入门慨述_oracle

正在看的ORACLE教程是:Oracle PL/SQL入门慨述.一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可.显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利. 然而,对于有些复杂的业务流程又要求相应的程序来描述,那么4GL就有些无能为力了.PL/SQL的出现正是

【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解>    系列文章目录导航     --通过知识共享树立个人品牌.           本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最"实在.经典"的写ORACLE PL/SQL编程的文章-!   觉得对你有帮助,请留言与猛点推荐,谢谢.     [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序

ORACLE PL/SQL编程之把游标说透

本篇主要内容 如下: 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理隐式游标 4.1.3 关于 NO_DATA_FOUND 和 %NOTFOUND的区别 4.1.4  使用游标更新和删除数据 4.2 游标变量 4.2.1  声明游标变量 4.2.2  游标变量操作 游标的使用  在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现. 4.1 游标概念  在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,ORACLE会在内存中为其分配上

[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)

原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到)       继上两篇:ORACLE PL/SQL编程之八:把触发器说透             ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)  得到了大家的强力支持,感谢.接下来再下猛药,介绍下一篇,大家一定要支持与推荐呀~!我也才有动力写后面的.     本篇主要内容如下: 4.1 游标概

PL/SQL专家指南3——调用者权限和定义者权限 上篇

1.介绍定义者(definer)权限和调用者(invoker)权限的概念 定义者权限:定义者权限PL/SQL程序单元是以这个程序单元拥有者的特权来执行它的,也就是说,任何具有这个PL/SQL程序单元执行权的用户都可以访问程序中的对象.所有具有执行权的用户都有相同的访问权限,在定义者权限下,执行的用户操作的schema为定义者,所操作的对象是定义者在编译时指定的对象. 调用者权限:调用者权限是指当前用户(而不是程序的创建者)执行PL/SQL程序体的权限.这意味着不同的用户对于某个对象具有的权限很可

PL/SQL for Types of Collections

  Collections Collections Overview   Types of Collections     Associative arrays       他是同种类型的一维.无边界的稀疏集合,只能用于 PL/SQL       DECLARE TYPE t_name IS TABLE OF varchar2(10) INDEX BY PLS_INTEGER;  --创建 Collection               i_name t_name;      --创建 ins

PL/SQL中的多进程通信技术简介

进程 PL/SQL是基于Oracle的一个主流应用程序编程语言,它的特点是将SQL语句与过程化程序开发语言相结合,以实现更为复杂的商业逻辑.本文主要就其中多进程通信进行讨论. 显然,多进程技术是用来提高应用的并发性,进而提高整个系统的执行效率,那么如何在PL/SQL中实现多进程的通信呢?其实,PL/SQL其设计的初衷主要是增强SQL语句的功能,而没有考虑到其他编程语言的高级功能,所以在PL/SQL中实现多进程通信只能借助于Oracle提供的两个开发包:DBMS_PIPE和DBMS_ALERT.

PL/SQL过程

     要想利用PL/SQL程序完成比较完整的数据库任务,需要进一步学习一些高级设计要素的内容.前面编写执行的PL/SQL程序,共同的特点是没有名称,只能存储为文件,然后通过执行文件的方式执行,因此称为无名块.与此对应的是在PL/SQL中也引入了高级程序设计的一些概念,其中最重要的就是过程.    过程就是高级程序设计语言中的模块的概念,将一些内部联系的命令组成一个个过程,通过参数在过程之间传递数据是模块化设计思想的重要内容. 创建过程     1. 过程的语法结构    完整的过程结构如下: