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

、声明字符变量

字符数据类型包括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;


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.netty入站与出站(处理器链调用机制)

【README】 1.本文源代码总结自 B站《netty-尚硅谷》;2.本文部分内容总结自 https://www.baeldung.com/netty3.本文主要介绍了通道管道中多个入栈处理器与多个出站处理器如何执行?并用代码演示执行顺序; 补充:文末附带了 log4j整…

1688推广工具_全面了解1688数字营销

全面了解1688数字营销什么是数字营销?在数字营销中,有一款很重要的工具-一键推广。在我们的日常经营和大促中,通过一键站外推广可以在各大站外平台实现全店、各产品的推广,尤其在大促中,结合活动当天的站内流量&#x…

Entity Framework升级

第三篇是Entity Framework升级 修改project.json 把原来 EntityFramework 的包 换成 Microsoft.EntityFrameworkCore 版本从 7.0.0-rc1-final 改为 1.0.0-rc2-final 对照表如下: RC1 PackageRC2 EquivalentEntityFramework.MicrosoftSqlServer 7.0.0-rc1-finalMicro…

12.netty中tcp粘包拆包问题及解决方法

【README】 1.本文源代码总结自B站《netty-尚硅谷》;2.本文介绍了tcp粘包拆包问题;3.本文po 出了粘包拆包问题解决方案及源代码实现;【1】tcp粘包拆包问题 refer2 How to deal with the problem of packet sticking and unpacking during T…

Oracle入门(十四.7)之良好的编程习惯

一、目的良好的编程实践是可以遵循的技术来创建最佳代码。 编程实践涵盖了从编写更易读的代码到创建具有更快性能的代码。软件工程团队通常会遵循风格指南,以便团队中的每个人都使用相同的技术。 这使得读取和修改其他人编写的代码变得更加容易。二、编程实践您已经…

css 浏览器调试中不可见_前端入门必会的初级调试技巧

本文仅仅针对前端初学者,目的是【用20%不到的时间】 学会【前端最常用的部分调试技巧】,如果需要最详细的调试技巧,包括调试性能优化的相关知识,文末会补充最全的文档(chrome devtool的官方文档链接)初学一…

升级ASP.Net Core项目

升级完类库项目,第二篇,我们来升级ASP.Net Core项目 修改global.json与project.json 这里可以参照,升级.Net Core RC2的那些事(一) 这里补充一点就是如果你觉得这样修改复杂,你完全可以新建一个项目&#x…

gophp解释器_【干货】Gisp 解释器 Golang 辅助开发工具

Gisp 是一个提供给 golang 使用的 Lisp 类 DSL 解释器。在 Lisp 的基本语法基础上,针对 go 环境稍作了一点语法糖。主要目标是提供一个尽可能便于与 golang 互操作的微型DSL工具。简介Gisp用go语言编写,是一个DSL 解释器,这个 DSL 基本上就是…

Oracle入门(十四.8)之迭代控制:基本循环Loop

一、迭代控制:LOOP语句 循环多次重复一个语句或一系列语句。 PL / SQL提供了以下几种类型的循环:•没有全面条件执行重复操作的基本循环 •FOR循环,基于计数器执行迭代操作•WHILE循环根据条件执行重复操作二、基本循环LOOP语句的最简单形式…

phpst安装memcache扩展_在 Ubuntu/Debian 下安装 PHP7.3 教程

介绍最近的 PHP 7.3.0 已经在 2018 年12月6日 发布 GA,大家已经可以开始第一时间体验新版本了,这里先放出 PHP7.3 安装的教程以便大家升级。适用系统: Ubuntu 18.04 LTS / Ubuntu 16.04 LTS / Ubuntu 14.04 LTS / Debian 9 stretc…

升级.Net Core RC1的类库项目

微软终于发布了.Net Code RC2了,作为一个软粉当然是第一时间升级了。《升级.Net Core RC2的那些事》系列文章主要是记录本人升级RC2的相关步骤以及遇到过的坑。 第一篇先写类库项目(Nuget包项目)的升级 升级VS工具 这里只提供一个下载地址&am…

Oracle入门(十四.9)之迭代控制:WHILE和FOR循环

一、WHILE循环您可以使用WHILE循环重复一系列语句,直到控制条件不再为TRUE。 条件在每次迭代开始时进行评估。当条件为FALSE或NULL时,循环终止。 如果条件在循环开始时为FALSE或NULL,则不会执行进一步的迭代。 WHILE condition LOOPstatement…

为TFS配置跨平台的生成服务器Xplat (Ubuntu Linux)

1. 概述 从TFS 2015开始,微软开始支持跨平台的构建代理。你可以使用TFS的Xplat代理,方便的在基于IOS, Unix和Linux的服务器上搭建生成代理,实现构建、发布等功能。本文档已Ubuntu为例,指导如何安装和运行Xplat代理。 2. 配置TFS的…

分数优先遵循志愿php源码_分数优先 遵循志愿

本报讯 昨日,广东省考试院发布2019年我省普通高校招生平行志愿投档及录取实施办法。今年我省依旧实行普通高校招生平行志愿投档录取模式,按照“分数优先、遵循志愿”的原则,根据考生高考成绩高低排序和院校志愿先后顺序投档,投出…

Oracle入门(十四.10)之显式游标简介

一、上下文区域和游标Oracle服务器分配一个称为上下文区域的私有内存区域来存储由SQL语句处理的数据。 每个上下文区域(因此每个SQL语句)都有一个与其关联的游标。您可以将游标视为上下文区域的标签,或者将其作为指向上下文区域的指针。 事实…

1.(转)canal背景与工作原理

【README】 1.canal是一个工具,由阿里开源,用于解析mysql的binlog增量日志,重放日志还原出业务数据,下游可以送入 es,mysql,hbase等; 2.本文以下内容转自:GitHub - alibaba/canal:…

Dapper、Entity Framework 和混合应用

你大概注意到了,自 2008 年以来,我写过许多关于 Entity Framework(即 Microsoft 对象关系映射器 (ORM))的文章,ORM 一直是主要的 .NET 数据访问 API。市面上还有许多其他 .NET ORM,但是有一个特殊类别因其强…

html让时间只展示年月日_如何用html写代码,使得在网页上显示当前的时间和日期...

展开全部在网页62616964757a686964616fe59b9ee7ad9431333363363537中动态的显示日期时间,一般都是使用js来实现,很简单,一看就会。网页中动态的显示系统日期时间function startTime(){var todaynew Date();//定义日期对象var yyyy today.get…

Oracle入门(十四.11)之使用显式游标属性

一、游标和记录 此示例中的游标基于SELECT语句,该语句仅检索每个表行的两列。 如果它检索了六列或七,八,二十个呢? DECLAREv_emp_id employees.employee_id%TYPE;v_last_name employees.last_name%TYPE;CURSOR emp_cursor ISSEL…

(转 )centos8安装mysql

【1】下载 mysql rpm包 MySQL :: Download MySQL Yum Repositoryhttps://dev.mysql.com/downloads/repo/yum/ 【2】安装mysql 根据官方文档安装,如下: MySQL :: A Quick Guide to Using the MySQL Yum Repositoryhttps://dev.mysql.com/doc/mysql-yu…