Oracle入门(十四F)之PL/SQL定义变量

一、变量介绍

(1)变量的使用
可以使用变量:

  • 临时存储数据
  • 存储值的操作
  • 可重用性

(2)PL/SQL中的变量处理
变量是:

  • 在声明部分中声明和初始化
  • 在可执行部分中使用和分配新值
变量可以是:
  • 作为参数传递给PL/SQL子程序
  • 指定保存PL/SQL子程序的输出

(3)声明和初始化PL/SQL变量
所有的PL/SQL变量都必须声明在引用之前的声明部分在PL/SQL块中。
声明的目的是分配为值存储空间,指定其数据类型,并将存储位置命名为你可以引用。
可以在声明语句中声明变量任何PL/SQL块、子程序或包。


二、变量声明和初始化变量

(1)语法

identifier [CONSTANT] datatype [NOT NULL] [:= expr | DEFAULT expr];

• identifier     定义该变量的名字

• CONSTANT  约束变量的值不可修改,常量必须在定义时初始化
• datatype     可以是标量、复合、引用或LOB数据类型。(本课程只包括标量、复合和LOB数据类型)。

• NOT NULL   约束该变量必须有值 (NOT NULL变量必须被初始化)
• Expr             可以是字面量表达式、另一个变量或包含操作符与函数的表达式的任何PL/SQL表达式

(2)习惯
小写斜体表示变量或占位符。
括号([…])包含一个或多个可选项,不插入括号。
竖杆代表在括号内两个或多个选项的选择,不要插入垂直条。

(3)声明和初始化变量

示例

declare
v_emp_hiredate date;
v_emp_deptno number(2) not null := 10;
v_location varchar2(13) := 'atlanta';
c_comm constant number := 1400;
v_population integer;
v_book_type varchar2(20) default 'fiction';
v_artist_name varchar2(50);
v_firstname varchar2(20):='rajiv';
v_lastname varchar2(20) default 'kumar';
c_display_no constant pls_integer := 20;
…

(4)在可执行部分中赋值

    在声明变量之后,可以在可执行文件中使用它作为PL/SQL块的一部分。例如,在下面的块中,变量v_myname在声明性部分块中声明。可以在同样的块的可执行部分中访问此变量。你认为这个代码块会输出什么?

declare
v_myname varchar2(20);
begin
dbms_output.put_line('my name is: '||v_myname);
v_myname := 'John';
dbms_output.put_line('my name is: '||v_myname);
end;

在这个示例中,将值约翰赋值给可执行部分。变量的值是关联My name is:

输出是:

my name is: 

my name is: John


在这个块中,变量v_myname被声明并初始化在声明部分。v_myname在初始化后持有为约翰的值。此值在可执行部分中被操作。

declare
v_myname varchar2(20):= 'john';
begin
v_myname := 'Steven';
dbms_output.put_line('my name is: '||v_myname);
end; 

输出:

my name is: Steven


(5)将变量作为参数传递给PL/SQL子程序参数是由用户传递给程序的值,或由另一个定制程序的程序。

在PL/SQL中,子程序可以采用参数。你可以通过变量作为过程和函数的参数。

在下面的示例中,参数v_date正在通过程序PUT_LINE,这是程序包的一部分,DBMS_OUTPUT。

declarev_date varchar2(30);
beginselect to_char(sysdate) into v_date from dual;dbms_output.put_line(v_date);
end;

将变量赋值给PL/SQL子程序输出
可以使用变量来保存作为函数的返回值。
--function to return number of characters in string
function num_characters (p_string in varchar2) return integer isv_num_characters integer;
beginselect length(p_string) into v_num_characters from dual;return v_num_characters;
end;
--anonymous block: assign variable to function output
declarev_length_of_string integer;
beginv_length_of_string := num_characters('oracle corporation');dbms_output.put_line(v_length_of_string);
end;



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

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

相关文章

小米手环nfc门卡摸拟成功后不能开门_如何使用小米手环5 NFC版进行门卡模拟(如公司门禁卡、小区门禁卡、学校门禁卡等)?...

由于本人最近购入了小米手环5 NFC版,所以对小米手环模拟门禁卡比较清楚一点。说一下用该手环模拟门禁的方法吧,我本人模拟的是学校公寓的门禁卡,不过学校的门禁卡是加密卡,可能操作起来稍微比不加密的门禁卡麻烦一点,因…

5.NIO零拷贝与传统IO的文件传输性能比较

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.本文部分内容参考自 NIO效率高的原理之零拷贝与直接内存映射 - 腾讯云开发者社区-腾讯云 【1】零拷贝原理 【1.1】传统IO的文件拷贝 【图解】 step1)调用 sys_read系统调用&#…

二进制漏洞利用与挖掘_二进制各种漏洞原理实战分析总结

本部分将对常见的二进制漏洞做系统分析,方便在漏洞挖掘过程中定位识别是什么类型漏洞,工欲善其事,必先利其器。0x01栈溢出漏洞原理栈溢出漏洞属于缓冲区漏洞的一种,实例如下:编译后使用windbg运行直接运行到了地址0x41…

Oracle入门(十四H)之良好的编程实践

一、为什么要学习它 好的编程实践是技巧,可以按照创建最好的代码可能。 编程实践涵盖了一切从代码更多可以用更快的速度创建代码性能。 软件工程团队通常会遵循风格指导让团队中的每个人使用相同的技术。 这使它更容易阅读和修改编写的代码其他。二、编程实践已经学…

微软.NET 正式劈腿成功,横跨所有平台

.NET官方博客宣布了《Announcing .NET Core RC2 and .NET Core SDK Preview 1》,正式如期发布了.NET Core RC2, 现在可以放心的基于.NET Core 构建 ASP.NET Core, console apps 和 class libraries for Windows, OS X and Linux。这里贴张图表达下他们之间的关系: …

2.BIO与NIO区别

【README】 1.本文总结自B站《netty-尚硅谷》,很不错;2.本文介绍 BIO, NIO的知识;【1】BIO(传统java IO模型) 1)BIO-Blocking IO:同步阻塞,服务器实现模式为一个连接一…

k8s往secret里导入证书_K8S之Secret

简介secret顾名思义,用于存储一些敏感的需要加密的数据。这些数据可能是要保存在pod的定义文件或者docker的镜像中。把这些数据通过加密的方式存放到secrets对象中,可以降低信息泄露的风险。在secret中存储的数据都需要通过base64进行转换加密后存放。创…

Oracle入门(十四G)之PL / SQL中检索数据

一、PL / SQL中检索数据 (1)PL / SQL中的SQL语句可以在PL / SQL中使用以下几种SQL语句:•SELECT从数据库检索数据。•DML语句,例如INSERT,UPDATE和DELETE,以更改数据库中的行。•事务控制语句,例…

.NET Core 1.0 CentOS7 尝试

昨天宣布 ASP.NET Core RC2,据说差不多稳定了,以后不会有大改了。 参考:https://blogs.msdn.microsoft.com/webdev/2016/05/16/announcing-asp-net-core-rc2/ 一、环境装备 等待很久了,高兴之余昨晚安装一个CentOS系统,版本如下&a…

6.netty线程模型-Reactor

【README】 1..本文部分内容翻译自: [Netty] Nettys thread model and simple usage 2.netty模型是以 Reactor模式为基础的,具体的,netty使用的是 主从Reactor多线程模型; 3.先介绍了 Reactor线程模型;后介绍了 Ne…

python mac读取 文件属性_从Python获取和设置mac文件和文件夹查找器标签

macfile模块是^{}模块的一部分,在"2006-11-20 0.2.0"中被重命名为mactypes使用此模块,以下两个函数可用于获取和设置appscript 1.0版的查找器标签:from appscript import appfrom mactypes import File as MacFile# Note these lab…

Oracle入门(十四.1)之PL / SQL简介

一、PL / SQL描述程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起。 •是Oracle专有编程语言。- 它只能用于Oracle数据库或工具。二、程序语言扩展到SQL•是一种程序语言。 - 当遵循一系列指令时会产生结果。 •是3GL(第三代编程语…

构建高性能.NET应用之配置高可用IIS服务器-第三篇 IIS中三个核心组件的讲解(上)

今天的文章的比较的容易,主要讲述IIS中三个比较重要的组件:协议监听者(Protocol Listeners),WWW服务(World Wide Web Publishing Service)和WAS(Windows Process Activation Service),理解这三个组件的功能,是理解IIS…

7.netty服务器中提交任务到NioEventLoop(Nio事件循环执行线程)

【README】 1.本文总结自 B站 《尚硅谷-netty》; 2.NioEventLoop实际上是一个提交到线程池的Runnable任务,在while无限循环中运行 taskQueue中的任务(串行); 【1】提交任务到NioEventLoop 1)NioEventLoop&#xff1…

Oracle入门(十四.2)之PL / SQL的好处

一、PL / SQL的好处在Oracle数据库中使用PL / SQL编程语言有很多好处。 1.将过程构造与SQL集成 2.模块化程序开发 3.改进的性能 4.与Oracle工具集成 5.便携性6.异常处理二、优点 优点1:使用SQL集成程序化结构PL / SQL的首要优势是程序结构与SQL的集成。 SQL是一种非…

炒菜机器人的弊端_机器人炒菜真不是你想的那样!

7月8日下午,爱餐全产业链模式发布会在张家口进行,会上,张家口文旅投集团与上海爱餐机器人有限公司签订了3000台智能机器人设备合作协议,这些机器人可是身手不凡,清一色的都是会厨艺的炒菜机器人,未来他们还…

构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)

通过三篇文章的普及,相信大家对IIS应该有了一个基本的了解。那么从本篇文章开始,我们就开始进入IIS一些比较实际的话题:如何配置IIS,使得其性能尽可能的高。 我们在本篇中主要讲述的就是“工作进程回收机制”,下面我们…

8.基于netty实现群聊,心跳检测

【README】 1.本文总结自B站《netty-尚硅谷》,很不错; 2.本文po出了 Unpooled创建缓冲区的 代码示例; 3.本文示例代码基于netty实现以下功能: 群聊客户端及服务器;心跳检测;【1】Unpooled创建缓冲区 U…

Oracle入门(十四.3)之创建PL / SQL块

一、PL / SQL块结构 一个PL / SQL块由三部分组成。PL / SQL块结构部分二、PL / SQL编译器用高级编程语言(C,Java,PL / SQL等)编写的每个程序都必须经过检查并转换为二进制代码(1和0),然后才能执…

[.NET Core].NET Core R2安装及示例教程

前言 前几天.NET Core发布了.NET Core 1.0.1 R2 预览版,之前想着有时间尝试下.NET Core。由于各种原因,就没有初试。刚好,前几天看到.NET Core发布新版本了,决定要去一探究竟。于是乎,就立马去官网查找相关的信息&…