pl/sql篇之變量的定義

news2024/9/22 7:20:12

簡述

本篇文章主要介紹pl/sql的變量的簡單數據類型,複雜數據類型定義和調用方法,希望能對讀者有些許作用

數據類型介紹

變量的定義和調用

在pl/sql中,定義的變量在聲明之後,可以直接在後續的sql調用,使用上非常方便

簡單數據類型的定義和使用

--定義變量
declare 
  newname varchar(20) :='zl';
begin
--引用變量
  update user_lin set   username=newname  where username='lin';
end;
commit;
--變量的賦值
declare 
  newname varchar(20) ;
begin
   select  username    into newname   from user_lin  where username='lin';
   DBMS_OUTPUT.PUT_LINE('僱傭的用戶名:'||newname); 
end;

複雜數據類型的定義和調用

數組的定義

--定義數組
DECLARE
--定義數組長度為五的數組變量
   TYPE reg_varray_type IS VARRAY(5) OF VARCHAR(25);
--初始化變量
   v_reg_varray REG_VARRAY_TYPE;
BEGIN
   v_reg_varray := reg_varray_type
         ('中', '美', '英', '日本', '法');
   DBMS_OUTPUT.PUT_LINE('地?名?:'||v_reg_varray(1)||'、'
                                    ||v_reg_varray(2)||'、'
                                    ||v_reg_varray(3)||'、'
                                    ||v_reg_varray(4));
   DBMS_OUTPUT.PUT_LINE('賦予初值NULL的第5個成員的值:'||v_reg_varray(5));

   v_reg_varray(5) := '法';
   DBMS_OUTPUT.PUT_LINE('第5個成員的值:'||v_reg_varray(5));
END;

集合數據類型的定義

--定義集合類型
declare
type test_rec is record(
    newname varchar(20):='孫明',
    nickname varchar(20):='zl'
);
a1  test_rec;

begin
  insert into user_lin(username,nickname)values(a1.newname,a1.nickname);
end;

--賦值
declare
type test_rec is record(
    newname   user_lin.username%Type,
    nickname   user_lin.nickname%Type
);
a1  test_rec;
begin
  select username,nickname  into a1 from user_lin where username='sun';
  DBMS_OUTPUT.PUT_LINE(a1.newname||'---'||a1. nickname); 
end;

%Type和%RowType使用介紹

這兩個關鍵字方便後續數據類型的維護,即不預先定義變量類型,讓數據類型跟隨數據庫列的類型變化而變化,降低維護成本

%TYPE:

定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型

相同,这时可以使用%TYPE。

使用%TYPE 特性的优点在于:

1.所引用的数据库列的数据类型可以不必知道;

2. 所引用的数据库列的数据类型可以实时改变;

declare
   newname    user_lin.username%type;
    nickname     user_lin.nickname%type;
begin
  select   username,     nickname  into newname,nickname   from user_lin where username='sun';
end;

%ROWTYPE:

PL/SQL 提供%ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。

使用%ROWTYPE 特性的优点在于:

1.所引用的数据库中列的个数和数据类型可以不必知道;

2.所引用的数据库中列的个数和数据类型可以实时改变。

declare
   info    user_lin%rowtype;
begin
  select   *   into  info    from user_lin where username='sun';
end;

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

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

相关文章

图解 MySQL MVCC 实现原理

文章目录MVCC 产生背景InnoDB 引擎表的隐藏列Undo 回滚版本链一致性视图MVCC 实现原理举例说明 MVCC 实现过程MVCC 产生背景 最早的数据库系统,只有读读之间可以并发,读写,写读,写写之间都要阻塞。而 MVCC (Muti Version Concurrency Control) , 是一种多版本并发控制机制。在…

Pandas+Pyecharts | 全国吃穿住行消费排行榜,最‘抠门’的地区居然是北京!!!

文章目录🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 计算各项占比🏳️‍🌈 3. Pyecharts数据可视化3.1 全国各地区人均收入、消费支出排行榜3.2 全国各地区人均可支配收入地图3.3 全国…

HCIA之ARP协议

ARP协议1、原理2、ARP工作过程3、ARP分类1、原理 根据已知的地址来获取与其对应的另一种地址 2、ARP工作过程 目标MAC全F,对于交换机,会洪泛;对于所有主机,都会以为是找自己的。 发送者PC1:发出广播帧,源I…

大型CRM客户管理系统带小程序、H5 java源码(spring boot 后台 前端vue)

功能介绍 1、系统管理:员工管理、角色管理、菜单管理、部门管理、岗位管理、字典管理、参数设置、日志管理 2、系统监控:在线用户、定时任务、数据监控、服务监控 3、系统工具:表单构建、代码生成、系统接口 4、平台配置:配置…

python - 密码加密与解密

Python之密码加密与解密 - 对称算法一、对称加密1.1 安装第三方库 - PyCrypto1.2 加密实现二、非对称加密三、摘要算法3.1 md5加密3.2 sha1加密3.3 sha256加密3.4 sha384加密3.5 sha512加密3.6 “加盐”加密由于计算机软件的非法复制,通信的泄密、数据安全受到威胁。…

车载音频系统方案的组合设计

现代数学可以分为两大类:一类是研究连续对象的,如分析学、方程等,另一类就是研究离散对象的数学。 有人认为广义的组合数学就是离散数学,也有人认为离散数学是狭义的组合数学和图论、代数结构、数理逻辑等的总称。但这只是不同学者在叫法上的区别,随着计算机科学的日益发…

实现支付宝网站登录

不推荐使用沙箱环境,因为问题太多,如果使用沙箱环境请注意一下几点 alipay.user.info.auth(用户登录授权接口)的 return_url 必传,建议检查是否设置 return_url。return_url 与应用中的授权回调地址一致。再换沙箱环境…

图解最常用的 10 个机器学习算法

在机器学习领域,有种说法叫做“世上没有免费的午餐”,简而言之,它是指没有任何一种算法能在每个问题上都能有最好的效果,这个理论在监督学习方面体现得尤为重要。 举个例子来说,你不能说神经网络永远比决策树好&#…

5.4 单管放大电路的频率响应

一、单管共射放大电路的频率响应 考虑到耦合电容和结电容的影响,图5.4.1(a)所示电路的等效电路如图(b)所示。在分析放大电路的频率响应时,为了方便起见,一般将输入信号的频率范围分为中频、低频和高频三个频段。在中频段,极间电容…

Win10系统打开控制面板出现闪退怎么回事?

Win10系统打开控制面板出现闪退怎么回事?有用户开启自己电脑的控制面板时,突然间页面初选了闪退的情况,导致无法进行相关设置的操作。那么我们怎么去进行控制面板闪退问题的解决呢?一起来看看以下的解决方法吧。 解决方法 1、更换…

Python | 文件操作和异常处理

博主简介🙇:🎓本科大二学生🎓,立志成为一名全栈开发工程师🎏🎏分类专栏📘:Python从入门到精通🌻🌻 知识目录一、文件操作1.1 打开和关闭文件1.2 读…

如何使用TCPA300电流放大器和电流探头进行电流测试

为了进行正确电流测试,工程师需要在使用前对电流探头进行消磁和校零调节,消磁可以消除电流探头的寄生磁场,否则会产生零点的漂移和测量误差,每次进行消磁后,都需要调节探头的零点,消除存在的偏移。电流探头…

垃圾桶溢出识别系统 opencv

垃圾桶溢出识别系统通过Opencvyolo网络模型深度学习技术,对垃圾桶垃圾溢出行为现象进行识别,监测到垃圾桶存在垃圾溢出时,立即抓拍存档 告警及时清理。OpenCV基于C实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是…

JGroups介绍及入门实战

我们在开发集群系统的过程中,往往需要在多个进程间同步很多状态,比如每个服务器进程的负载状况、数据队列长度等等……。还有一些情况,我们需要把不同的进程分类,然后分发不同的通知消息,最常见的是发出一些运维命令&a…

「YGG Japan」宣布已完成约 295 万美元的新股权私募

ForN(总部位于东京都港区;CEO 藤原哲哉;以下简称 “ForN” )今天宣布,与 ForN 合作的区块链游戏平台 YGG Japan 已完成价值约 295 万美元的私募轮融资,投资方共有 18 家公司。加上本轮融资,YGG …

多种汉语方言语音落地应用,微软智能语音解锁更多交互场景

多年来,微软持续探索 AI 语音合成与识别技术,获得了大量成果:Azure Neural TTS(text-to-speech,语音合成)与 STT(speech-to-text,语音识别)支持的语言区域达到 140 余个&…

GItOps - k8s的微服务实战1 - 构建业务镜像

概述 在学习了容器化、docker和k8s的 Ingress-Nginx 、server 和pod 知识后,开启了 k8s的微服务实战第三篇,在搭建环境废了一点周折,这次实战的目的是集成在gitlab里,实现自动打包、发布的功能。 Mac M2芯 搭建k8s(minikube)超详…

puzzle(0332)色块拼图、物换星移、移星掠形

目录 一,纯色块拼图——旋转 二,物换星移 三,六边形纯色块拼图——旋转 四,纯色块拼图——轮换 五,移星掠形 练习模式 策略 比赛模式 一,纯色块拼图——旋转 这种纯粹就是数字拼图——旋转的简化版…

Web3中文|逆流前行:日本开始拥抱Web3

在最近的一次东京之行中,我发现交谈过的人似乎都没有因FTX崩溃(或之前加密领域的一系列负面事件)感到特别担忧。 众议院议员、日本现今执政党自民党的Web3项目团队成员Masaaki Taira表示,FTX的垮台“对政策制定没有影响”。 尽管…

DC/DC电源模块直流升压线性可调正负输出5v12v24v转0-±50v/±110v/±200v/±250v/±360v/±500v

特点● 效率高达70%以上● 1*2英寸标准封装● 正负电压输出● 价格低● 电压控制,输出电压随控制电压线性变化● 工作温度: -40℃~85℃● 阻燃封装,满足UL94-V0 要求● 温度特性好● 可直接焊在PCB 上应用GRA 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电…