PLSQL Day6

declare
  type i_type is table of varchar2(50) index by varchar2(50);
  tab i_type;
  idx varchar2(50);
begin
  tab('A'):='东邪';
  tab('a'):='西毒';
  tab('g'):='南帝';
  tab('d'):='北丐';
  tab('p'):='中神通';
  idx := tab.first;
  loop
    dbms_output.put_line(tab(idx));
    exit when idx=tab.last;
    idx:=tab.next(idx);
  end loop;
end;

----------------------------------------------------------------------------
declare
  type i_tab is table of varchar2(50) 
index by varchar2(50);
  tab i_tab;
  i varchar2(50);
begin
  tab('a'):='东邪';
  tab('b'):='西毒';
  tab('c'):='南帝';
  tab('d'):='北丐';
  tab('e'):='中神通';
  i:=tab.first;
  <<A>>
  dbms_output.put_line(tab(i));
  i:=tab.next(i);
  if i is not null then
    goto A;
  end if;
end;

----------------------------------------------------------------------------

declare
   --声名一个索引表类型
   type mytype is table of varchar2(200) index by varchar2(5);
   --声名一个索引表类型变量
   tab mytype;
   --声名一个变量保存索引表的下标
   ind varchar2(5);
begin
  tab('d'):='东邪';
  tab('e'):='西毒';
  tab('b'):='南帝';
  tab('a'):='北丐';
  tab('f'):='中神通';
  ind:=tab.first;
   ---遍历集合
   while ascii(ind)<=ascii(tab.last) loop
      --打印集合元素
      dbms_output.put_line(tab(ind));
      ind:=tab.next(ind);--ind:=ind+1;
   end loop;
end;

----------------------------------------------------------------------------

--4.取出所有员工的薪资(sal),存入嵌套表中,通过遍历集合得出总工资和:
declare
   type a_type is table of emp%rowtype ;
   e_tab a_type := a_type();
   x number := 1;
   all_sal number := 0;
begin
  for i in (select * from emp) loop
    e_tab.extend;
    e_tab(x) := i;
    x := x+1;
  end loop;
  for j in 1..e_tab.count loop
    all_sal := all_sal + e_tab(j).sal;
  end loop;
  dbms_output.put_line('总工资为:'||all_sal);
end;

--5.创建一个与emp字段相同的空表copy_emp,
--利用集合把emp表中的数据导入copy_emp:

-- create or replace type copy_type is table of emp_type;
create table copy_emp
as (select * from emp where 1=0);

declare
  type b_type is table of emp%rowtype;
  e_tab b_type := b_type();
  x number := 1;
begin
  for i in (select * from emp) loop
    e_tab.extend;
    e_tab(x) := i;
    x := x+1;
  end loop;
  for j in 1..e_tab.count loop
    insert into copy_emp values(e_tab(j).empno,e_tab(j).ename,
    e_tab(j).job,e_tab(j).mgr,e_tab(j).hiredate,e_tab(j).sal,
    e_tab(j).comm,e_tab(j).deptno);
  end loop;
end;


select * from copy_emp;


--6.按部门编号将员工存入不同的集合,再取出打印:
declare
  type c_type is table of emp%rowtype;
  e_tab c_type := c_type();
  x number := 1;
  dno number := &部门号;
begin
  for i in (select * from emp where deptno = dno) loop
    e_tab.extend;
    e_tab(x) := i;
    x := x+1;
  end loop;
  for j in 1..e_tab.count loop
    dbms_output.put_line(e_tab(j).empno||e_tab(j).ename||'  '||
    e_tab(j).job||'  '||e_tab(j).mgr||'  '||e_tab(j).hiredate
    ||'  '||e_tab(j).sal||'  '||
    e_tab(j).comm||'  '||e_tab(j).deptno);
  end loop;
end;

--
declare
  type d_type is table of emp%rowtype;
  e_10_tab d_type := d_type();
  e_20_tab d_type := d_type();
  e_30_tab d_type := d_type();
  x number := 1;
  y number := 1;
  z number := 1;
begin
  for i in (select * from emp where deptno = 10) loop
    e_10_tab.extend;
    e_10_tab(x):=i;
    x:=x+1;
  end loop;
  for i in (select * from emp where deptno = 20) loop
    e_20_tab.extend;
    e_20_tab(y):=i;
    y:=y+1;
  end loop;
  for i in (select * from emp where deptno = 30) loop
    e_30_tab.extend;
    e_30_tab(z):=i;
    z:=z+1;
  end loop;
  for j in 1..e_10_tab.count loop
    dbms_output.put_line(e_10_tab(j).empno||e_10_tab(j).ename||'  '||
    e_10_tab(j).job||'  '||e_10_tab(j).mgr||'  '||e_10_tab(j).hiredate
    ||'  '||e_10_tab(j).sal||'  '||e_10_tab(j).comm||'  '||e_10_tab(j).deptno);
  end loop;
  for j in 1..e_20_tab.count loop
    dbms_output.put_line(e_20_tab(j).empno||e_20_tab(j).ename||'  '||
    e_20_tab(j).job||'  '||e_20_tab(j).mgr||'  '||e_20_tab(j).hiredate
    ||'  '||e_20_tab(j).sal||'  '||e_20_tab(j).comm||'  '||e_20_tab(j).deptno);
  end loop;
  for j in 1..e_30_tab.count loop
    dbms_output.put_line(e_30_tab(j).empno||e_30_tab(j).ename||'  '||
    e_30_tab(j).job||'  '||e_30_tab(j).mgr||'  '||e_30_tab(j).hiredate
    ||'  '||e_30_tab(j).sal||'  '||    e_30_tab(j).comm||'  '||e_30_tab(j).deptno);
  end loop;
end;

--7.将所有员工信息保存到一个集合中,然后删除下标为3,5,7,及最后三个下标对应的元素。
-- 然后给下标为5的元素重新赋值,最后输出集合中元素的个数:
declare
  type e_type is table of emp%rowtype;
  e_tab e_type := e_type();
  x number := 1;
  cnt number := 0;
begin
  for i in (select * from emp) loop
    e_tab.extend;
    e_tab(x) := i;
    x := x+1;
  end loop;
  cnt := e_tab.count;
  for j in 1..e_tab.count loop
    if j in (3,5,7,cnt,cnt-1,cnt-2) then
      e_tab.delete(j);
    end if;
  end loop;
  e_tab(5) := null; 
  dbms_output.put_line(e_tab.count);
end;
select * from emp;

--8.编写一个点名器,声明一个集合,存储五个同学的名字,
-- 每次执行后会随机输出一个名字,并且输出后,
--该名字在下次执行时不会出现(生成1-5随机整数:trunc(dbms_random.value(1,6))):

create table sttuu(sname varchar2(50));
insert into sttuu values('东邪');
insert into sttuu values('西毒');
insert into sttuu values('南帝');
insert into sttuu values('北丐');
insert into sttuu values('中神通');

truncate table sttuu;
select * from sttuu;
declare
  type stu_type is table of sttuu%rowtype;
  s_tab stu_type := stu_type();
  cursor cur is select * from sttuu;
  x number := 1;
  n number;
  i number := 5;
begin
  select count(*) into i from sttuu;
  s_tab.extend(i);
  for s_cur in cur loop
    s_tab(x).sname := s_cur.sname;
    x := x+1;
  end loop;
  if i > 0 then
  n := trunc(dbms_random.value(1,i));
  dbms_output.put_line(s_tab(n).sname); 
  delete from sttuu where sname = s_tab(n).sname;     
  s_tab.delete(n); 
  else  
    dbms_output.put_line('NO DATA!');
  end if;
end;


----
declare
   type stu_type is record(
     sname varchar(50)    
   );
   type s_type is table of stu_type;
   stu s_type := s_type();
   nid number ;
   x number;
begin
  stu.extend(5);
  stu(1).sname := '东邪'; 
  stu(2).sname := '西毒';
  stu(3).sname := '南帝';
  stu(4).sname := '北丐';
  stu(5).sname := '中神通';
  x := stu.count;
  <<A>>
  while x>0 loop
    nid := trunc(dbms_random.value(1,6)); 
    if stu.exists(nid) then
      dbms_output.put_line(stu(nid).sname);
      stu.delete(nid); 
      x:=x-1;
    end if;
    goto A;
  end loop;
end;


create table sttuu(sname varchar2(50));
insert into sttuu values('东邪');
insert into sttuu values('西毒');
insert into sttuu values('南帝');
insert into sttuu values('北丐');
insert into sttuu values('中神通');

truncate table sttuu;
select * from sttuu;
declare
  type stu_type is table of sttuu%rowtype;
  s_tab stu_type := stu_type();
  cursor cur is select * from sttuu;
  x number := 1;
  n number;
  i number := 5;
begin
  select count(*) into i from sttuu;
  s_tab.extend(i);
  for s_cur in cur loop
    s_tab(x).sname := s_cur.sname;
    x := x+1;
  end loop;
  if i > 1 then
  n := trunc(dbms_random.value(1,i));
  dbms_output.put_line(s_tab(n).sname); 
  delete from sttuu where sname = s_tab(n).sname;     
  s_tab.delete(n); 
  else 
    dbms_output.put_line(s_tab(1).sname); 
    delete from sttuu where sname = s_tab(1).sname;     
    s_tab.delete(1); 
  end if;
end;


 

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

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

相关文章

14.x86游戏实战-汇编指令cmp test

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

LLm与微调

推荐尝试的微调模型 internlm2-20b-chat&#xff0c;internlm2-7b-chat&#xff0c; Qwen2-7B-Instruct, Qwen2-1.5B-Instruct, Qwen1.5-32B-Chat (Qwen2-0.5B、Qwen2-1.5B, qwen1.5的4B&#xff0c;7B&#xff0c;14B&#xff0c;32B) glm-4-9b-chat, glm-4-9b-chat-1m, gl…

Redis教程(二十三):Redis的底层数据结构

Redis的数据类型 Redis是一种高性能的key-value数据库,广泛用于缓存、消息队列、应用程序会话管理等领域。它之所以能提供高效的数据操作性能,很大程度上归功于其底层使用了多种优化过的数据结构来存储数据。以下是Redis用来存储不同类型键值对的一些核心数据结构: 1. 字符串…

SLAM相关知识

目前在SLAM上的传感器主要分为两大类&#xff1a;激光雷达和摄像头 激光雷达&#xff1a;单线、多线 摄像头&#xff1a;单目相机&#xff08;普通USB相机&#xff09;、双目相机&#xff08;2个普通的USB相机&#xff09;、单目结构光&#xff08;深度相机&#xff09;、双目…

【二】Ubuntu24虚拟机在Mac OS的VMware Fusion下无法联网问题

文章目录 1.环境背景2. 需求背景3. 解决方法3.1 在mac的终端查看虚拟机NAT网络3.2 查看unbuntu节点2的网络配置3.3 问题定位与解决3.3.1 检查是否有冲突3.3.2 冲突解决方法 4. 总结4.1 NAT 网关的原理4.2 VMware Fusion 的 NAT 模式4.3 为什么网关冲突会引起问题4.4 理解配置冲…

Javadoc介绍

Javadoc 是用于生成 Java 代码文档的工具。它利用特定的注释格式,将 Java 源代码中的注释提取出来,并生成 HTML 文档。Javadoc 注释通常位于类、接口、构造函数、方法和字段的声明之前,以 /** 开始,以 */ 结束。以下是 Javadoc 注释的一些主要元素和使用方法: 基本语法 …

HTML 学习指南:从入门到精通

什么是HTML HTML&#xff08;HyperText Markup Language&#xff09;是构建网页的框架。掌握HTML不仅能更好的理解网页的结构&#xff0c;还能为进一步学习CSS、JavaScript等前端技术打下坚实的基础。本篇文章将为你规划一条从HTML入门到精通的学习路线&#xff0c;并概述每个…

AutoHotKey自动热键(五)添加WINDOWS秘笈指令-输入瞬间启动功能

在AUTOHOTKEY的使用中,不仅仅可以监听组合热键,还可以监听正常文本击键录入,这是另一种监听方式,比如依次击键jsq之后直接弹出<计算器>工具,或者依次击键sj之后直接输出135****5564的手机号码,等等,这就是autohotkey的录入击键监听,以双冒号为开头:: 因这种录入监听像极了…

【UE5】仅修改结构体的若干个数据

蓝图中的结构体变量 | 虚幻引擎4.27文档 (unrealengine.com) 连线连到傻&#xff0c;因为如果某个变量set空值也一起过去了。一查发现有这个节点。

EEG源定位(EEG Source Localization)

EEG源定位&#xff08;EEG Source Localization&#xff09;是一种用于确定大脑内部电活动来源的方法。通过在头皮上记录的电信号&#xff08;EEG&#xff09;&#xff0c;源定位技术可以推断这些信号的起源&#xff0c;即确定大脑中的哪些区域产生了这些电活动。这对于理解大脑…

【面向就业的Linux的基础】从入门到熟练,探索Linux的秘密(十三)-常用的命令

上述是一些系统命令的基本练习&#xff0c;可以当做日常笔记学习收藏一下&#xff01;&#xff01;&#xff01; 目录 前言 一、文件权限 二、文件检索 三、查看文件内容 四、用户相关 五、工具 六、安装软件 七、作业​​​​​​​ 总结 前言 上述是一些系统命令的…

vue2 、 vue3首屏优化,减少白屏时间

在第一帧的时候加载应该被用户看到的页面部分&#xff0c;剩下的逐步加载 1. 使用v-for来模拟页面有很多重组件 <template v-for"item in 100"><sub-home-page :key"item" v-if"defer(item)"></sub-home-page></templat…

简单仿写MVC

代码地址&#xff08;需要自取&#xff09;&#xff1a;mvc_Imitation: 简单仿写实现MVC (gitee.com) 项目目录 先把架子搭好 Controller注解 Documented Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) public interface Controller { }RequestMapping Do…

大模型lora微调中,rank参数代表什么,怎么选择合适的rank参数

在大模型的LoRA&#xff08;Low-Rank Adaptation&#xff09;微调中&#xff0c;rank参数&#xff08;秩&#xff09;是一个关键的超参数&#xff0c;它决定了微调过程中引入的低秩矩阵的维度。具体来说&#xff0c;rank参数r表示将原始权重矩阵分解成两个低秩矩阵的维度&#…

11.索引_创建不同种类索引(primary+unique+复合....)

索引Index 文章目录 索引Index一、 索引简介1.定义2.索引分类2、索引优缺点3.索引关键字的选取原则 二、创建索引-(创建不同种类索引,删除)-索引失效 一、 索引简介 官网 1.定义 索引是将关键字数据以某种数据结构的方式存储到外存&#xff0c;用于提升数据的检索性能&#…

互助学习平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;课程信息管理&#xff0c;课程分类管理&#xff0c;课程评价管理&#xff0c;学习计划管理&#xff0c;留言板管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;课程信息…

Databend 开源周报第 152 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend。 支持内置 UDFs …

数学建模美赛入门

数学建模需要的学科知识 高等数学线性代数 有很多算法的掌握是需要高等数学和线代的相关知识 如&#xff1a;灰色预测模型需要微积分知识&#xff1b;神经网络需要用到导数知识&#xff1b;图论和层次分析法等都需要用到矩阵计算的相关知识等&#xff1b; 概率论与数理统计&am…

忘记Apple ID密码怎么退出苹果ID账号?

忘记Apple ID密码怎么退出账号&#xff1f;Apple ID对每个苹果用户来说都是必不可少的&#xff0c;没有它&#xff0c;用户就不能享受iCloud、App Store、iTunes等服务。苹果手机软件下载、丢失解锁、恢复出厂设置等都需要使用Apple ID。如果忘记Apple ID 密码&#xff0c;这会…

Flutter 开启混淆打包apk,并反编译apk确认源码是否被混淆

第一步&#xff1a;开启混淆并打包apk flutter build apk --obfuscate --split-debug-info./out/android/app.android-arm64.symbols 第二步&#xff1a;从dex2jar download | SourceForge.net 官网下载dex2jar 下载完终端进入该文件夹&#xff0c;然后运行以下命令就会在该…