一、声明字符变量

字符数据类型包括CHAR,VARCHAR2和LONG。

DECLAREv_emp_job VARCHAR2(9);v_order_no VARCHAR2(6);v_product_id VARCHAR2(10);v_rpt_body_part LONG;
…

二、声明数字变量

数字数据类型包括NUMBER,PLS_INTEGER,BINARY_INTEGER和BINARY_FLOAT。 在语法中,CONSTANT约束变量,使其值不能改变。 常量必须初始化。 INTEGER是NUMBER(38,0)的别名。

DECLAREv_dept_total_sal NUMBER(9,2) := 0;v_count_loop INTEGER := 0;c_tax_rate CONSTANT NUMBER(3,2) := 8.25;…

(1)声明日期变量

日期数据类型包括DATE,TIMESTAMP和TIMESTAMP WITH TIMEZONE。

DECLAREv_orderdate DATE := SYSDATE + 7;v_natl_holiday DATE;v_web_sign_on_date TIMESTAMP;
…

(2)声明布尔变量

布尔值是存储用于逻辑计算的三个可能值之一的数据类型:TRUE,FALSE或NULL。

DECLAREv_valid BOOLEAN NOT NULL := TRUE;v_is_found BOOLEAN := FALSE;v_underage BOOLEAN;
…

声明布尔变量细节

声明布尔变量时:

•只能将值TRUE,FALSE和NULL分配给布尔变量。
•条件表达式使用逻辑运算符AND和OR,而运算符不检查变量值。
•变量总是产生TRUE,FALSE或NULL。
•您可以使用算术,字符和日期表达式来返回布尔值。

三、声明和初始化PL / SQL变量的准则

只有值TRUE,FALSE和NULL可以分配给布尔变量。
•使用有意义的名称并遵循命名约定。
•为了更好的可读性,代码维护和更简单的评论,每行声明一个标识符。
•当变量必须保存一个值时,使用NOT NULL约束。

•避免使用列名作为标识符。

DECLAREcountry_id CHAR(2);
BEGINSELECT country_idINTO country_idFROM countriesWHERE country_name = 'Canada';
END;

四、使用%TYPE属性固定变量

您可以使用%TYPE属性根据另一个先前声明的变量或数据库列声明变量,而不是对变量的数据类型和精度进行硬编码。

当存储在变量中的值是从数据库中的表派生时,最常使用%TYPE属性。

当你使用%TYPE属性声明一个变量时,你应该用数据库表和列名作为前缀。

(1)%TYPE属性

看看这个数据库表和使用它的PL / SQL块。 这个PL / SQL块将正确的薪水存储在v_emp_salary变量中。 但是如果表格列稍后改变呢?

CREATE TABLE myemps (emp_name VARCHAR2(6),emp_salary NUMBER(6,2));
DECLAREv_emp_salary NUMBER(6,2);
BEGINSELECT emp_salary INTO v_emp_salaryFROM myemps WHERE emp_name = 'Smith';
END;

(2)%TYPE属性详细信息

%TYPE属性:
•用于自动给变量赋予与以下相同的数据类型和大小:
- 数据库列定义
- 另一个声明的变量
•带有以下任一项的前缀:
- 数据库表和列
- 其他声明变量的名称

(3)用%TYPE属性声明变量

句法:

identifier table.column_name%TYPE;

例子:

...v_emp_lname employees.last_name%TYPE;v_balance NUMBER(7,2);v_min_balance v_balance%TYPE := 1000;
...

(4)%TYPE属性的优点

%TYPE属性的优点是:
•您可以避免由数据类型不匹配或错误精度造成的错误。

•如果列定义更改,则不需要更改变量声明。 也就是说,如果您已经为特定的表格声明了一些变量而不使用%TYPE属性,那么如果声明变量的列被更改,那么PL / SQL块可以返回错误。

•当您使用%TYPE属性时,PL / SQL将在编译块时确定变量的数据类型和大小。 这确保了这样的变量总是与用于填充它的列兼容。

(5)%TYPE属性

再看看数据库表和PL / SQL块。现在,即使列数据类型稍后发生更改,PL / SQL块仍会继续正常工作。

CREATE TABLE myemps (emp_name VARCHAR2(6),emp_salary NUMBER(6,2));
DECLAREv_emp_salary myemps.emp_salary%TYPE;
BEGINSELECT emp_salary INTO v_emp_salaryFROM myemps WHERE emp_name = 'Smith';
END;

Oracle入门(十四.6)之使用标量数据类型相关推荐

  1. Oracle入门(十四.5)之识别数据类型

    一.PL / SQL数据类型 数据类型指定存储格式,约束和有效的值范围. PL / SQL支持五类数据类型: 二.标量数据类型(Scalar) (1)标量数据类型 •保持一个值 •没有内部组件 •可以 ...

  2. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  3. Oracle笔记 十四、查询XML操作、操作系统文件

    --1.随机数 select dbms_random.value from dual; select mod(dbms_random.random, 10) from dual; --0-9随机数 s ...

  4. Oracle入门(四)之查询基本信息

    一.查询基本信息 (1) 查询实例服务 SQL> show parameter instance name (2)查询数据库名字 SQL> show parameter db_name; ...

  5. slam入门——十四讲笔记(一)

    文章目录 第1讲 预备知识 第1部分 数学基础 第2讲 初识SLAM 2.1 引子:小萝卜的例子 2.2 经典视觉SLAM框架 2.3 SLAM问题的数学表述 2.4 实践:编程基础 1. 安装Lin ...

  6. python3行3列文件数据赋值_Python3快速入门(十四)——Pandas数据读取

    Python3快速入门(十四)--Pandas数据读取 一.DataFrame IO 1.CSV文件 pandas.read_csv(filepath_or_buffer, na_values='NA ...

  7. IM开发者的零基础通信技术入门(十二):上网卡顿?网络掉线?一文即懂!

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<上网慢?经常掉线?这篇文章告诉你该怎么办!>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注 ...

  8. Oracle入门(十四)之PL/SQL

    一.PL/SQL 基本语法 PL/SQL语言是模块式的过程化SQL,是oracle公司对SQL的扩展. (1) (2) (3) (5) (6) (7)数据类型 Number 数字型 Varchar2 ...

  9. Oracle入门(十四.13)之带参数的游标

    一.带参数的游标 参数是一个变量,其名称用于游标声明中. 当游标打开时,参数值被传递给Oracle服务器,Oracle服务器使用它来决定要将哪些行检索到光标的活动集中. 这意味着您可以在块中多次打开和 ...

  10. Oracle入门(十二)之SQL的DDL

    一.数据类型 Character 数据类型 Number 数据类型 Date 数据类型 Raw 和 Long Raw 数据类型 LOB 数据类型 注:Oracle数据类型详解 二.表 (1)创建表 c ...

最新文章

  1. HDU 1712 裸分组dp
  2. 1039. 到底买不买(20)
  3. opensplice dds v6.3.2_给你看个宝贝,近乎完美的DDS正弦波信号音生成器
  4. 【opencv】图像处理之开闭运算
  5. Oracle学习之DATAGUARD(八) Switchover与failover
  6. Idea Debug多线程不进断点问题处理
  7. 谈谈工业通信协议的采集和转换-如modbus opc profinet ethernetIP 61850等
  8. rs422/rs485通信接口原理图
  9. PHP 照片合并视频
  10. 【阿里云】云解析DNS
  11. yy安全中心官网首页登录html,YY安全中心手机版
  12. 详解项目管理中任务、成本、产品三者的关系
  13. 京东FBP、LBP、SOP、SOPL 四种分别是什么意思?
  14. web常见漏洞解析 注入 xss csrf 文件上传 文件包含 -dvwa演示
  15. jaeger client java_grpc分布式链路跟踪之jaeger
  16. mariadb MMM
  17. Java中File使用--创建文件
  18. crontab shell 每5秒执行_linux定时任务crontab 实现每秒执行一次的方法
  19. 基于RISC-V架构的开源处理器及SoC研究综述
  20. Sequencer: Deep LSTM for Image Classification(LSTM在CV领域杀出一条血路,完美超越Swin与ConvNeXt等前沿算法)

热门文章

  1. go语言io reader_go语言之IO操作(待补充)
  2. [数据结构]树、森林与二叉树之间的相互转换方法
  3. 小型数字系统---运动码表设计
  4. [汇编语言]实验一:查看CPU和内存,用机器指令和汇编指令编程。
  5. [PAT乙级]1007 素数对猜想
  6. [Java基础]线程同步之卖票案列分析
  7. [Java基础]Calendar类基础
  8. php字符串类型详解,php数字类型之字符串类型详解
  9. ./include/caffe/util/cudnn.hpp: error: too few arguments to function ‘SetPooling2dDescriptor
  10. 网络流与线性规划24题(写了一半,先鸽下了……)