`

PL/SQL编程—数据类型

阅读更多

-- =====<PL/SQL中的数据类型>===== --
-- 包含标量类型、LOB类型、属性类型
  -- 标量类型包含:数字、字符、布尔型、日期时间、参照类型
  -- LOB类型包含:BFILE、BLOB、CLOB、NCLOB
  -- 复合类型包含:PL/SQL记录、PL/SQL表

 

-- 1.标量类型(scalar)==>常用类型,数据库中的预定义类型的变量
  -- 定义标量的语法:variable_NAME data_TYPE,其中variable_NAME是变量名,data_TYPE是PL/SQL中预定义的类型
  -- 定义变量示例
 -- 定义一个变长字符串

v_name varchar2(20);

 -- 定义一个小数并赋初始值为5.4,:=是赋值号
v_sal2 number(6,2):=5.4;

 -- 定义一个日期类型数据
v_hiredate date;

 -- 定义一个布尔变量,不能为空,初始值为FALSE
v_valid boolean not null default false;

 -- 定义一个常量
c_num constant number(5):=100;

-- 例:输入员工号,显示雇员姓名、工资、个人所得税。
-- 说明变量的使用

create or replace procedure pro_01(v_empno number) is

-- 声明需要用到的变量变量
-- 声明就定义了该变量
v_ename varchar2(20);
v_sal number(10,2);
c_taxrate constant number(3,2):=0.03;
v_tax number(10,2);

 begin
   select ename,sal into v_ename,v_sal from emp where empno=v_empno;
   
   -- 根据工资计算所得税
   v_tax:=v_sal*c_taxrate;
   
   dbms_output.put_line('姓名:'||v_ename||'工资:'||v_sal||'所得税:'||v_tax);
   
end;

 

-- 定义变量时数据类型参照数据库表中的数据类型,以实现对变量长度空间的灵活分配

create or replace procedure pro_02(v_empno number) is

-- 声明变量时数据类型参照表字段的类型
v_ename emp.ename%type;
v_sal emp.sal%type;
c_taxrate constant number(3,2):=0.03;
v_tax number(10,2);

 begin
   select ename,sal into v_ename,v_sal from emp where empno=v_empno;
   
   -- 根据工资计算所得税
   v_tax:=v_sal*c_taxrate;
   
   dbms_output.put_line('姓名:'||v_ename||'工资:'||v_sal||'所得税:'||v_tax);
   
end;

 -- 两例代码请注意变量声明时变量类型的区别

 

 

-- 2.复合变量==>
 -- PL/SQL记录=>一个类型存放多个数据
  -- 定义一个PL/SQL记录类型emp_recordtype
  -- 包含3个数据name,sal,job
  -- 语法:type CompositeTyp_NAME is record();
 -- 例:定义一个函数,根据输入的员工编号,返回员工的姓名,工资和岗位

-- 对于PL/SQL记录的使用首先要定义一个包,将记录放到包中:

-- 首先定义一个包
create or replace package package_01 is

  -- 在包中定义一个复合类型
  type emp_recordtype is record(
    v_name emp.ename%type,
    v_sal emp.sal%type,
    v_job emp.job%type
  );
  
end package_01;

  -- PL/SQL记录是为多返回值而生的,有时在PL/SQL编程中,得到的结果不止一个,且类型各不相同,使用PL/SQL记录可解决此问题:

-- 由于需要返回多个值,通过返回自定义类型,将多个值包含在自定义类型中
create or replace procedure pro_03(v_empno number) is

  -- 定义自定义类型的变量
  v_record package_01.emp_recordtype;
begin
  
  -- 查询语句
  select ename,sal,job into v_record.v_name,v_record.v_sal,v_record.v_job from emp where empno=v_empno;
  dbms_output.put_line('姓名:'||v_record.v_name||'工资:'||v_record.v_sal||'岗位:'||v_record.v_job);
end;

 

-- PL/SQL表=>
 -- 例:查询部门10的所有员工的姓名。

create or replace procedure pro_04(v_deptno number) is

-- 定义一个PL/SQL表类型=>表类型类似于C/C++/Java中的数组类型
type emp_tableNAME is table of emp.ename%type index by binary_integer;

-- 使用自定义表类型创建数组变量
v_names emp_tableNAME;

begin
  select ename into v_names(0) FROM EMP WHERE DEPTNO=v_deptno;
  
  dbms_output.put_line(v_names(0));

end;
-- 此代码运行时报错,多条数据需要使用参照变量

 

-- 3.参照类型==>
 -- 游标类型 ref cursor=>  
  -- 例:使用PL/SQL编写一个块,可以输入部门号,显示该部门所有员工的姓名和工资

-- 由于有多个结果,需要进行多取出结果,并输出,游标在此就充当了一个标记的作用,将结果循环获取

create or replace procedure pro_04(v_deptno number) is 

-- 定义一个游标类型
type empcursor_TYPE is ref cursor;

-- 定义游标变量,此处默认是关闭的
emp_cursor empcursor_TYPE;

-- 定义变量接受游标中的数据
v_ename emp.ename%type;
v_sal emp.sal%type;

begin
  
  -- 使用游标时要打开,再将PL/SQL语句执行的结果交给游标管理
  open emp_cursor for select ename,sal from emp where deptno=v_deptno;
  
  -- 循环取出游标中的数据
  loop
    -- 取游标数据
    fetch emp_cursor into v_ename,v_sal;
    dbms_output.put_line('姓名:'||v_ename||'工资:'||v_sal);
    
    -- 当游标中没有数据时结束循环
    exit when emp_cursor%notfound;
    
  end loop;
end;

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    Oracle PL SQL程序设计 上 第五版(代码示例)

    《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...

    oracle实验五 PL/SQL编程

    【实验目的】 1. 熟悉PL/SQL的数据类型和书写规则 2. 熟悉控制结构和游标的使用 3. 编写和运行函数、过程和触发器

    PL/SQL Developer 6.05注册版-1

    例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...

    Oracle PL/SQL程序设计(第5版)(下册) 第一部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    PL/SQL Developer 7.1.5 注册版-3

    例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...

    Oracle 11g SQL和PL SQL从入门到精通〖送源代码〗

    本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。通过学习本书,读者不仅可以掌握Oracle常用工具Oracle Universal Installer、Net Comfiguration Assistant、SQL Developer、SQL*Plus的作用及使用方法,...

    PL/SQL Developer

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    Oracle PL SQL

    走进Oracle、认识PL/SQL、数据表的基本操作、表中数据的基本操作、数据的基本查询、查询中函数的使用、数据表的高级查询、索引及视图的使用、数据类型、流程控制、游标、存储过程和函数、触发器、异常处理、事务和锁...

    pl/sql developer 9 + 注册机

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    PL/SQL Developer8.04官网程序_keygen_汉化

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    PL/SQL Developer v8.0.zip

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

     本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...

    PL/SQL Developer 7.1.5 注册版

    例如,数据库开发中您可以允许PL/SQL Developer的全部功能性,而数据库测试中您可以仅允许数据查询/编辑和对象浏览功能,而数据库制作中您甚至根本不希望PL/SQL Developer访问。利用PL/SQL Developer授权功能,您...

    Oracle PL SQL程序设计 上 第五版part1

    《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...

    Oracle PL SQL程序设计 上 第五版part2

    《oracle pl/sql程序设计(第5版)》基于oracle数据库11g,从pl/sql编程、pl/sql程序结构、pl/sql程序数据、pl/sql中的sql、pl/sql应用构建、高级pl/sql主题6个方面详细系统地讨论了pl/sql以及如何有效地使用它。...

    PLSQL Developer 7.1.5

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

Global site tag (gtag.js) - Google Analytics