数据类型

char, Nchar

varchar2, Nvarchar2

clob, Nclob

number

number(9, 2);  -- 定点小数, 小数点左边7位, 右边2位

number, 浮点小数

number(2) 整数

pls_integer: 由硬件实现算法的整数类型, 顾名思义, 效率高, 但是兼容性...

for 循环计数器的类型是 PLS_INTEGER

ROWID 和 UROWID 用来代表某个表中某条记录的地址, ROWID 代表了表中一行记录的唯一物理地址, UROWID代表了一个索引组织表(iot)中一条记录的逻辑地址.

游标变量

强 ref cursor

declare

type book_data_t is ref cursor return book%rowtype;    -- 一种数据类型

book_curs_var book_data_t;

弱 ref cursor

declare

type book_data_t is ref cursor;   -- 类型只声明是一个游标, 并没有关联到任何一个特殊的记录结构

book_curs_var book_data_t;

book_curs_var_b sys_refcursor;

internet 数据类型, 例如 xml, url 等, oracle 提供支持.

Any 数据类型, 包括 AnyType, AnyData, AnyDataSet.

用户定义数据类型

声明一个变量

当你声明一个变量时, PLSQL会分配出一块内存空间:

name datatype [not null] [:= | default default_assignment];

例如:

declare

l_total_count number;

l_dollar_amount number(10, 2);

l_right_now date not null default system;

l_favorite_flavor varchar2(100) := ‘Anything with chocolate actually;

TYPE list_of_books_t IS table of book%rowtype index by binary_integer;  -- 自定义类型

oreilly_oracle_books list_of_books_t;

声明常量

常量, 必须直接提供缺省值.

name constant datatype [not null] := | default default_value;

例如:

declare

l_curr_year constant pls_integer := to_number(to_char(sysdate, ‘yyyy’));

l_steven constant person_ot :=

person_ot(‘human’, ‘Steven feuerstein’, 175, to_date(‘09-23-1958’, ‘mm-dd-yyyy’));

锚定

你在声明变量时通常都是采用"硬编码"即明确指定数据类型的方式, 如果要从数据库表或者其他PL/SQL程序结构获得数据, 一个更好的实践方式是把变量声明和对象"锚定"在一起, 所谓一个"锚定"的数据类型, 就是告诉 pl/sql 按照已经定义好的数据结构来设置变量的数据类型, 这个定义好的数据结构可能是: 另一个Pl/sql变量, 一个预定义的 type 或者 subtype, 一个数据库表或者表中一列, plsql 提供两种锚定方法:

标量锚定: %type

记录锚定: %rowtype

DECLARE

l_book book%rowtype;

begin

select * into l_book

from book

where isbn = ‘1-5692-335-9’

process_book(l_book);

end;

这种锚定是一种依赖关系, 即"被锚定" 元素发生改变, 使用锚定的代码就会标识为无效, 一旦代码被重新编译, 锚定又会重新建立.

not null 数据类型的锚: 当你声明变量时, 你可以要求这个变量时not null的, 如果其他变量用这个变量的%type属性声明的, 那么这个约束(not null) 也会传递给这个新的变量.

数据类型转换

推荐使用显示类型转换, 例如 to_char, to_number, to_date 等

即 使用显示函数进行转换.

cast 函数: 例如:

select employee_id, cast(hire_date as varchar2(30)) from employee;

或者:

declare

hd_display varchar2(30);

begin

hd_display := cast(sysdate as varchar2);

end;

convert 函数

convert(string_in in varchar2, new_char_set varchar2 [, old_char_set varchar2]) return varchar2

convert 仅仅是吧这个字符集中的字母或者符号替换成另一个字符集中对应的字母或者符号, 常用的两个字符集是 WE8 MSWIN1252 和 AL16UTF16

还有其他一些函数, 例如将16进制数转换成2进制数等等.

plsql programming 07 使用数据的更多相关文章

  1. plsql修改某一行数据

    plsql修改某一行数据时, 在查询语句后面加上for update,再点击

  2. PLSQL Developer导入Excel数据

    LSQL Developer导入Excel数据 最近处理将Excel数据导入Oracle的工作比较多.之前都是采用Sqlldr命令行导入的方式处理.每次导入不同格式的Excel表数据,都需要先把Exc ...

  3. PLSQL读取XML的数据

    最近公司做的几个项目,都是通过EBS与外部系统的Web Service进行数据的交互,而调用Web Service的时候,我们所传送的数据,都是按照约定的XML格式来传递,所以EBS接收到数据之后,需 ...

  4. plsql programming 17 过程, 函数与参数

    代码模块化, 即将一大块代码拆成若干小块(过程), 然后就可以在其他模块调用这些模块了, 这样, 重用性更好, 也方便管理. 过程: 过程是一个可以像执行 PL/SQL 语句一样调用的程序, 一个过程 ...

  5. plsql programming 16 动态SQL和动态PLSQL

    动态SQL 是指在执行时才构建 SQL 语句, 相对于静态 sql 的编译时就已经构建. 动态PLSQL 是指整个PL/SQL代码块都是动态构建, 然后再编译执行的. 作用: 1. 可以支持 DDL ...

  6. (转)PLSQL Developer导入Excel数据

    场景:近来在做加班记录的统计,主要是统计Excel表格中的时间,因为我对于Excel表格的操作不是很熟悉,所以就想到把表格中的数据导入到数据库中,通过脚本语言来统计,就很方便了!但是目前来看,我还没有 ...

  7. plsql 导入导出表、数据、序列、视图

     一.导出: 1.打开plsql-->工具---->导出用户对象(可以导出表结构和序列.视图) ps:如果上面不选中"包括所有者",这样到导出的表结构等就不包含所有 ...

  8. SpringMVC札集(07)——JSON数据

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  9. plsql programming 14 DML和事务管理

    我们可以把多个SQL语句集中在一起, 在逻辑上组成一个事务, 从而保证这些操作或者全部被保存到数据库(用sql的说法就是”提交”), 或者被整体驳回(用sql的说法是“回滚”). 事务: ACID 原 ...

随机推荐

  1. 下载谷歌浏览器(Chrome)扩展离线安装包crx文件最简单的方法

    转:http://alyzq.com/?p=627 如果不会使用,请看下面的操作步骤 引言(可以不看): 下面介绍一下,下载谷歌浏览器(Google Chrome)扩展的离线安装包crx文件最简单的方 ...

  2. md5代码实现

    参考: 1.http://blog.csdn.net/iaccepted/article/details/8722444 2.http://hi.baidu.com/gh0st_lover/item/ ...

  3. [转载]Ubuntu 14.04中root 密码忘记解决方法

      Ubuntu 14.04中root 密码忘记解决方法 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 或者直接运行sudo ...

  4. HDU 4287-Intelligent IME(哈希)

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-点动面板的每个按钮含义

    参考下面的图示     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com/acetaohai123   我的在线论坛: http://csrobot.g ...

  6. 火狐 http://localhost:8080自动跳转到http://www.localhost.com:8080

    用火狐调试PHP时 偶尔会出现连接被重置的情况:http://localhost:8080自动跳转到http://www.localhost.com:8080 解决方案1: 打开网络-属性,往下拉找到 ...

  7. CentOS 5 全功能WWW服务器搭建全教程 V3.0

    http://hx100.blog.51cto.com/44326/339949/ 一.基本系统安装1.下载CentOS 5我是下载的DVD版本,大家也可以下载服务器CD安装版本,其实都差不多.大家可 ...

  8. select * from (select user())a 为什么是查询user()的意思?

    步骤:1.先查询 select user() 这里面的语句,将这里面查询出来的数据作为一个结果集 取名为 a2.然后 再 select * from a 查询a ,将 结果集a 全部查询出来

  9. web 前端 常见操作 将时间戳转成日期格式 字符串截取 使用mui制作选项卡

    1.将时间戳转成日期格式: //第一种 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString( ...

  10. HDU4499 Cannon DFS 回溯的应用

    题意就是给你一个n*m的棋盘,然后上面已经有了 棋子.并给出这些棋子的坐标,可是这些棋子是死的就是不能动,然后让你在棋盘上面摆炮.可是炮之间不能互相吃.吃的规则我们斗懂得 炮隔山打嘛.问你最多能放几个 ...