当前位置:  数据库>oracle

PL/SQL的几个概念区别

    来源: 互联网  发布时间:2017-05-22

    本文导语: 1:char  和 varchar2的区别: varchar2 :variable-length  变长 char : fixed-length 固定长度 char定义的时候分配内存,而varchar2动态分配内存 下面一个例子明确的说明了这两个的区别 : SQL> DECLARE  2    c CHAR(32767)    := ' ';  3    v VARCHAR2(...

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 过程已成功完成。


    
 
 

您可能感兴趣的文章:

  • PL/SQL Developer 10.0发布
  • Toby's PL/SQL Editor
  • Orcale 数据库客户端PL/SQL 中文乱码的问题解决方法
  • Oracle中在pl/sql developer修改表的2种方法
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • oracle中如何用PL/SQL打开一个指定的库,并在屏幕上列出库中的所有表?
  • 解析PL/SQL Developer导入导出数据库的方法以及说明
  • Oracle中PL/SQL中if语句的写法介绍
  • 64位win7下pl/sql无法连接oracle解决方法
  • PL/SQL编程经验小结开发者网络Oracle
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性 iis7站长之家
  • 在Oracle PL/SQL中游标声明中表名动态变化的方法
  • Oracle PL/SQL入门案例实践
  • Oracle使用PL/SQL操作COM对象
  • Oracle中的存储过程在pl/sql和java中如何调用
  • Oracle数据库编写PL/SQL代码经验谈
  • PL/SQL Number数字类型函数
  • PL/SQL Dev连接Oracle弹出空白提示框的解决方法分享
  • ORACLE PL/SQL 触发器编程篇介绍
  • [Oracle新手教程] 用PL/SQL画直方图
  • Oracle PL/SQL入门慨述
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • sql2005 大数据量检索分页的sql代码
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • java命名空间java.sql接口resultsetmetadata的类成员方法: getcolumntype定义及介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,