`

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
分享到:
评论

相关推荐

    PL/SQL编程基础知识

    ### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...

    PL/SQL编程(电子版)

    【PL/SQL编程】是Oracle数据库中用于数据库管理和应用程序开发的一种高级过程语言,它结合了SQL查询语言的威力和高级编程语言的灵活性。本章详细介绍了PL/SQL的基础知识,帮助初学者快速掌握该语言。 **4.1 PL/SQL...

    oracle10g_pl/sql

    - **变量和常量**:PL/SQL支持各种数据类型,如NUMBER、VARCHAR2、DATE等,以及声明变量和常量的方式。 - **流程控制**:包括IF...ELSIF...ELSE、CASE、FOR循环、WHILE循环等结构。 2. **PL/SQL程序单元** - **...

    PL/SQL基础编程,实例自写

    ### PL/SQL基础编程知识点详解 #### 一、PL/SQL概述 PL/SQL,全称为Procedural Language for SQL,是Oracle数据库特有的高级程序设计语言。它结合了SQL的数据处理能力和传统编程语言的控制结构,使开发者能够在...

    pl/sql最新中文手册

    6. **复合类型**:PL/SQL支持数组、集合和记录等复合类型,这些使得处理复杂数据结构变得可能。手册会详细介绍这些类型的创建和使用。 7. **包(Packages)**:包是将相关的过程、函数和变量封装在一起的一种方式,...

    Oracle PL/SQL编程及最佳实践

    PL/SQL 提供了多种数据类型,例如数字、字符、日期等。数字类型包括整数、浮点数等。字符类型包括字符、字符串等。日期类型包括日期、时间等。 十、基本类型(系统预定义类型) PL/SQL 提供了多种基本类型,例如...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    1. **编程能力**:PL/SQL允许编写包含控制结构(如循环、条件语句)和异常处理的程序块,这些块可以存储在数据库中并按需调用,提高了数据库应用的灵活性和复杂性。 2. **数据处理**:通过PL/SQL,用户可以直接对...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    2. **变量和数据类型**:PL/SQL支持多种数据类型,包括数值型(NUMBER、BINARY_INTEGER、PLS_INTEGER)、字符型(VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及复合数据类型如记录和数组。 3. **控制...

    oracle实验三PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库管理系统中的重要组成部分,它是一种过程化语言,允许开发者编写复杂的数据库应用程序。在本次实验中,我们将重点学习PL/SQL的基本语法、控制结构、复合数据类型以及异常处理技术。 ...

    Oracle PL/SQL实战(待续)

    同时,PL/SQL支持多种数据类型,包括数值类型(NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)等,以及复合类型如记录(RECORD)和表类型(TABLE)。 此外,PL/SQL的包(PACKAGE)概念是将相关的过程和...

    精通pl/sql

    2. **PL/SQL数据类型**:详细讲解PL/SQL支持的数据类型,如数值型、字符型、日期时间型、布尔型、记录类型、游标类型等,以及如何进行数据转换和操作。 3. **PL/SQL控制结构**:深入探讨流程控制语句,如循环...

    精通oracle10g PL/SQL编程

    Oracle10g中的PL/SQL较之前的版本增加了许多新特性,例如新的数据类型、新的函数和方法等。这些新增特性增强了PL/SQL对数据操作和逻辑处理的能力,使得开发人员在编写应用程序时更加高效和灵活。 本书《精通Oracle...

    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 9i pl/sql程序设计笔记

    通过上述对Oracle 9i PL/SQL程序设计笔记的总结,我们可以看到PL/SQL作为一种强大的数据库编程语言,提供了丰富的功能来支持数据处理、事务控制及业务逻辑的实现。掌握PL/SQL的不同块类型及其使用方法对于开发高效、...

    精通oracle 10g pl/sql编程

    它不仅涵盖了PL/SQL编程的基本概念和语法,还深入介绍了如何在Oracle 10g这个具体版本的数据库管理系统中高效使用PL/SQL,从而完成复杂的数据管理和应用开发任务。通过对本书的学习,读者可以掌握PL/SQL编程的精髓,...

    ORACLE PL/SQL从入门到精通

    循环语句是PL/SQL编程中用来重复执行一组语句的结构,包括loop、while、for三种形式,它们各自有不同的使用场景和语法。 分支条件语句在PL/SQL中用来根据不同的条件执行不同的代码分支,主要包括CASE表达式和if-...

    oracle实验五 PL/SQL编程

    ### Oracle 实验五 PL/SQL编程 #### 实验目的 本次实验旨在使学习者深入了解PL/SQL编程的基础知识与实际应用。具体目标包括: 1. **掌握PL/SQL的数据类型和基本语法**:理解PL/SQL中不同数据类型的定义与使用方法...

    Oracle PL/SQL程序设计(第5版)(上下册)

    #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL查询的基础上添加控制流语句、变量定义、错误处理等特性...

    oracle pl/sql 编程

    这一章节将介绍PL/SQL的基本概念,包括数据类型、变量声明、常量和表达式的使用。通过实例演示,读者可以快速上手PL/SQL的编程环境,为后续的学习打下坚实的基础。 #### 第2章至第5章:流程控制与高级特性 这几...

    Oracle_PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库系统中的一个核心组成部分,它扩展了SQL的语法,使得数据库管理及应用程序开发更具灵活性和可编程性。PL/SQL融合了SQL查询和控制流语句,提供了处理复杂业务逻辑的能力。 PL/SQL的...

Global site tag (gtag.js) - Google Analytics