`
insertyou
  • 浏览: 906062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

PL/SQL --> 语言基础

 
阅读更多

--=====================

-- PL/SQL --> 语言基础

--=====================

PL/SQL是过程化的SQL语言,是ORACLESQL语言的扩展,在普通SQL语句的基础上增加了编程语言的特点。使得该语言不仅具有过程编程语

言的特征,如循环、条件分支等。同时也具有对象编程语言的特征,如重载、继承等。

一、PL/SQL程序语言的组成

主要由块组成

一个块由三个基本部分组成:声明、执行体、异常处理

PL/SQL块有匿名块和命名块

命名块会将代码保存到服务器

典型的块结构如下

[ DECLARE --声明部分

declaration_statements

]

BEGIN

executable_statements --执行体部分

[EXCEPTION

exception_handling_statements --异常处理部分

]

END;

/

PL/SQL的语言优点

支持SQL

高生成率,性能好

可移植性

Oracle集成

二、PL/SQL的语法要素

PL/SQL语法要素包括字符集、标识符、文本、分隔符、注释等。

字符集:

包括英文大小写

0-数字

空白符、制表符、空格

一些特殊符号,如~、!、@、#等

PL/SQL字符集不区分大小写

标识符:

变量、常量、子程序的名称

以字母开头、最大长度个字符

包含空格等特殊符号时,要用英文双引号括起来

文字

数值型

可用常规表示,也可以用科学计数法和幂的形式

字符型

字符型用单引号括起

日期型

布尔型

TRUEFALSENULL

PL/SQL的数据类型

NUMBER 数字型能存放整数值和实数值,并且可以定义精度和取值范围

DEC 数字型NUMBER的子类型,小数

DOUBLE PRECISION 数字型NUMBER的子类型,高精度实数

INTEGER 数字型NUMBER的子类型,整数

INT 数字型NUMBER的子类型,整数

NUMERIC 数字型NUMBER的子类型,与NUMBER等价

REAL 数字型NUMBER的子类型,与NUMBER等价

    SMALLINT 数字型NUMBER的子类型,取值范围比INTEGER

  BINARY_INTEGER 数字型可存储带符号整数,为整数计算优化性能

  VARCHAR2 字符型存放可变长字符串,有最大长度

  CHAR 字符型定长字符串

  LONG 字符型变长字符串,最大长度可达,767

  DATE 日期型以数据库相同的格式存放日期值

  BOOLEAN 布尔型TRUE OR FALSE

  ROWID ROWID 存放数据库的行号

LOB类型,又分为BFILE,BLOB,CLOB,NCLOB

操作符

算术运算符

+、-、*、/、**

比较运算符

=、<>~=!= ^=<<=>>=

其它分隔符

():= (赋值)、,(表表项的分隔)、| |(字符串连接)

<< (标号开始) >> (标号的结束)

-- 单行注释

/* */ 多行注释

% 属性指示器,一般与TYPEROWTYPE等一起用

三、定义变量

变量的类型可以分为

标量类型

复合类型

参照类型

LOB 类型

1.标量类型(常用)

varchar2(n),char(n),number(p,s),date,timestamp,long(long raw),boolean,binary_integer,binary_float,binary_double

定义方法(定义时必须使用标量类型)

identifier [constant] datatype [not null] [:= | default expr]

v_ename varchar2(20);

v_sal number(6,2);

c_tax_rate constant number(3,2):=3.35;

v_hiredate date;

v_valid boolean not null default false;

v_ename emp.ename%type; --使用表列来定义数据类型

v_sal emp.sal%type;

2.复合类型(存放多个值的变量)

plsql中包含pl/sql记录,pl/sql表,嵌套表,varray四种复合类型

--定义PL/SQL记录

declare

type emp_record_type is record(

name emp.ename%type,

salary emp.sal%type,

title emp.job%type);

emp_record emp_record_type;

begin

select ename,sal,job into emp_record

from scott.emp where empno=7788;

dbms_output.put_line('Employee Name: ' || emp_record.name);

end;

/

--定义PL/SQL

declare

type ename_table_type is table of emp.ename%type

index by binary_integer;

ename_table ename_table_type;

begin

select ename into ename_table(-1) from scott.emp

where empno=7788;

dbms_output.put_line('Employee Name : '|| ename_table(-1));

end;

/

PL/SQL表类似于高级语言中的数组,PL/SQL表的下表可以为负值,元素的个数没有限制.注意必须首先定义PL/SQL表类型及表变量

在本例中,ename_table_type为表类型,表类型中元素的数据类型为emp.ename%type

ename_table为表变量,ename_table(-1)表示下标为-1的元素

--嵌套表,varray例子略

3.参照类型变量

用于存放数值指针的变量。通常包括游标变量(REF CURSOR)和对象类型变量(REF obj_type)

4.LOB变量

存储大批量数据的变量,通常分为内部LOB以及外部LOB

5.使用SQL*Plus变量

必须首先使用variable命令定义变量,如在SQL*Plus中输出变量,则使用print variable_name

scott@ORCL> var name varchar2(20);

scott@ORCL> begin

2 select ename into :name from emp where empno=7788;

3 end;

4 /

PL/SQL procedure successfully completed.

scott@ORCL> print name;

NAME

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

SCOTT

三、PL/SQL中常用的变量赋值方式

1.在定义时赋值

v_empno number:=7788

c_tax_rate constant number(3,2):=3.35;

2.使用select ... into 来赋值

SELECT expression INTO var_list FROM table_name WHERE condition

--例:将号部门的名称和工作地点显示出来

DECLARE

v_name dept.dname%TYPE;

v_loc dept.loc%TYPE;

BEGIN

select dname,loc INTO v_name,v_loc FROM dept WHERE deptno=10;

DBMS_OUTPUT.PUT_LINE('10 DEPT NAME: '||v_name);

DBMS_OUTPUT.PUT_LINE('10 DEPT loc: '||v_loc);

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUT.PUT_LINE('NOT FOUND RECORD');

END;

/

--例:输入员工编号,查询员工姓名,职位,工资

scott@ORCL> DECLARE

2 v_name emp.ename%TYPE;

3 v_job emp.job%TYPE;

4 v_sal emp.sal%TYPE;

5 v_id emp.empno%TYPE;

6 BEGIN

7 v_id:=&inputid;

8 SELECT ename,job,sal INTO v_name,v_job,v_sal FROM emp WHERE empno=v_id;

9 DBMS_OUTPUT.PUT_LINE('7788 NAME:'||v_name);

10 DBMS_OUTPUT.PUT_LINE('7788 job:'||v_job);

11 DBMS_OUTPUT.PUT_LINE('7788 sal:'||v_sal);

12 EXCEPTION

13 WHEN NO_DATA_FOUND THEN

14 DBMS_OUTPUT.PUT_LINE('NOT FOUND RECORD!');

15 END;

16 /

Enter value for inputid: 7788

old 7: v_id:=&inputid;

new 7: v_id:=7788;

7788 NAME:SCOTT

7788 job:ANALYST

7788 sal:3000

PL/SQL procedure successfully completed.

--例:执行UPDATE

scott@ORCL> DECLARE

2 v_sal emp.sal%TYPE;

3 old_sal emp.sal%TYPE;

4 v_id emp.empno%TYPE;

5 BEGIN

6 v_sal:=&inputsal;

v_id:=&inputid;

7 v_id:=&inputid;

8 SELECT sal INTO old_sal FROM emp WHERE empno=v_id;

9 UPDATE emp SET sal=v_sal WHERE empno=v_id;

10 DBMS_OUTPUT.PUT_LINE('old sal:'||old_sal);

11 DBMS_OUTPUT.PUT_LINE('new sal:'||v_sal);

12 END;

13 /

Enter value for inputsal: 3500

old 6: v_sal:=&inputsal;

new 6: v_sal:=3500;

Enter value for inputid: 7788

old 7: v_id:=&inputid;

new 7: v_id:=7788;

old sal:3000

new sal:3500

PL/SQL procedure successfully completed.

四、更多参考

有关SQL请参考

SQL 基础--> 子查询

SQL 基础-->多表查询

SQL基础-->分组与分组函数

SQL 基础-->常用函数

SQL 基础--> ROLLUP与CUBE运算符实现数据汇总

SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)

有关PL/SQL请参考

PL/SQL --> 语言基础

PL/SQL --> 流程控制

PL/SQL --> 存储过程

PL/SQL --> 函数

PL/SQL --> 游标

PL/SQL -->隐式游标(SQL%FOUND)

PL/SQL --> 异常处理(Exception)

PL/SQL --> PL/SQL记录

PL/SQL --> 包的创建与管理

PL/SQL --> 包重载、初始化

PL/SQL --> DBMS_DDL包的使用

PL/SQL --> DML 触发器

PL/SQL --> INSTEAD OF 触发器

分享到:
评论

相关推荐

    pl/sql最新中文手册

    1. **PL/SQL基础**:手册可能会从基础开始,介绍PL/SQL的基本结构,包括声明变量、常量、游标、记录类型等。还会讲解如何编写存储过程、函数和触发器。 2. **控制流程语句**:这包括条件判断(IF-THEN-ELSIF-ELSE)...

    PL/SQL 基本知识

    这篇博客主要探讨了PL/SQL的基础知识,包括其语法特性、使用场景以及在数据库管理中的重要性。 首先,PL/SQL是一种过程化语言,它允许用户定义变量、控制流程(如循环、条件语句)、处理异常,并且可以嵌入SQL查询...

    PL/SQL编程基础知识

    PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库的核心组成部分之一,PL/SQL在数据库应用程序开发...

    Oracle资料学习PL/SQL必备

    PL/SQL(Procedural Language/Structured Query Language)是Oracle专为数据库操作设计的一种过程化编程语言,结合了SQL的强大查询功能与高级编程语言的控制结构,使得数据库管理员和开发人员能够更高效、安全地管理...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库管理、数据处理和业务逻辑实现更为高效。本书针对那些希望提升PL/SQL编程技能,设计和开发复杂数据库解决方案的...

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

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

    oracle 9i pl/sql程序设计笔记

    **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。 **关键词**:Oracle 9i、PL/SQL #### PL/SQL程序结构详解 **2.1...

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    PL/SQL doc 文件

    本文将讲述 PL/SQL 基础语法、结构和组件、以及如何设计并执行一个 PL/SQL 程序。 PL/SQL 的优点包括: * 高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令。 * 支持所有 SQL 数据...

    PL/SQL Developer 远程连接Oracle数据库

    PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...

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

    Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...

    PL/SQL下载

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程编程的语言,专为数据库管理和应用程序开发设计。PL/SQL全称为“Procedural Language/Structured Query Language”,它提供了丰富的控制...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    PL/SQL是Oracle专为数据库管理设计的一种过程化编程语言,它结合了SQL查询语言的威力与高级编程语言的灵活性,使得数据库开发者能够创建复杂的应用程序逻辑。 在"Oracle Database 12c PL/SQL开发指南(第7版)"这...

    pl/sql 学习资料

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程式编程的高级语言,主要用于数据库管理和应用程序开发。在这个“PL/SQL学习资料”压缩包中,包含了十一个PDF文件,覆盖了从基础到进阶的...

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

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

    PL/SQL入门到精通书的源代码

    PL/SQL是Oracle数据库系统中的过程式语言,它结合了SQL的数据操作能力与结构化编程语句,使得开发者能够创建复杂的数据处理逻辑和业务规则。本资料“PL/SQL入门到精通书的源代码”是一份针对初学者到高级用户的实践...

    pl/sql开发手册

    会话模式是PL/SQL Developer与Oracle数据库交互的基础,它决定了程序如何连接和操作数据库。多路会话或双路会话模式允许开发者同时与多个数据库连接,这对于复杂的应用场景尤为重要。此外,事务管理确保了数据的一致...

    最容易上手的PL/SQL学习教程-有经过测试的丰富案例

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一种过程化语言,它结合了SQL的查询功能和传统的编程语言特性,如变量、条件语句、循环结构等,使得数据库管理与应用开发更为灵活...

    PL/SQL基础

    这篇博客将深入探讨PL/SQL的基础知识,帮助你理解并掌握这个强大的数据库编程语言。 首先,我们来看一下PL/SQL的基本结构。PL/SQL程序由一系列的块组成,每个块都有自己的声明部分、执行部分和异常处理部分。声明...

    Oracle PL/SQL学习官方教材

    Oracle PL/SQL是一种强大的编程语言,它将SQL与过程编程语言的特性相结合,为数据库开发提供了丰富的功能。在Oracle数据库环境中,PL/SQL是开发高效、可靠和可维护的数据库应用程序的关键工具。以下是对"Oracle PL/...

Global site tag (gtag.js) - Google Analytics