• plsql programming 07 使用数据


    数据类型

    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进制数等等.

  • 相关阅读:
    @import的最优写法
    IE7 下hack的方法
    在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
    MySQL 依赖另外一个统计出来数据更新表数据的范例
    PHP的bool值
    Ubuntu 下如何配置Jira
    ubuntu 访问Windows的共享
    备份 mysql数据
    ubuntu从中文切换成英文的方法
    css锚点定位偏移原理兼容浏览器
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3547672.html
Copyright © 2020-2023  润新知