`

oracle学习笔记_3 PL-SQL基础

阅读更多

PL/SQL基础(oracle对sql语言的扩展,类似于java语言;前后端互动,后端想知道前端要查信息必须用参数方式捕捉,即用PL/SQL可解决)

 

1.PL/SQL块结构(类似java类)
DECLARE  声明
...
BEGIN  开始
...
EXCEPTION  异常
...
END;  结束
/     执行

###dos下,设置服务器输出为打开: set SERVEROUTPUT ON SIZE 10000  (最大为100万)
###保存: save c:oracle\test1.txt
###执行: @ c:oracle\test1.txt
###编辑: deit c:oracle\test1.txt (不给路径默认执行缓冲区的)
###单字段赋值:select name INTO test from aaa where name='001';//其中INTO test是将查出来得结果集赋值于test变量,*只能一个字段数据。
###多字段赋值:select * INTO myrec from aaa where a='jun';//需要用多记录

1.1变量声明内容
  * 赋予变量适当名称
  * 赋予变量正确数据类型
  * 定义变量(标准、记录)
  * 控制变量范围

1.2命名规则
  * 变量由字符开头
  * 可以包括:数字、下划线、'$'、'#'等
  * 变量长度范围:1-30
  * 大小写不区分
  * 变量名不能是系统关键字select if for等


/********************1.3PL/SQL小例子***********************/
declare
x varchar2(100):='abcd';
begin
x:='hello oracle';
dbms_output.put_line('x的值为: '||x);
--dbms_output.put_line('x的值为: '||x);
end;
/
set SERVEROUTPUT ON SIZE 10000   (最大为100万)

l
/

保存: save c:oracle\test1.txt
执行: @ c:oracle\test1.txt
编辑: deit c:oracle\test1.txt (不给路径默认执行缓冲区的)

###注意:不区分大小写、赋值用':=' 、判断用'=' 、连接字符用'||' 、dbms_output包、行注释用'--' 、块注释用'/*sssss*/' 、执行用'\' 、显示缓冲区用'l'
        oracle也支持z integer:=230 和 str1 string(100):='hello' 和 num number:=25;
/********************1.3PL/SQL小例子***********************/

 

2.分支语句(if-then分支、case分支)
/********************2.1PL/SQL小例子--if-then分支***********************/
declare
a number;
b varchar2(10);
begin
a:=2;
if a=1 then
b:='aaaa';
elsif a=2 then
b:='bbbb';
else
b:='cccc';
end if;
dbms_output.put_line('b的值为:'||b);
end;
/
/********************2.1PL/SQL小例子--if-then分支***********************/

 

/********************2.2PL/SQL小例子--case分支***********************/
declare
a number;
b varchar2(10);
begin
a:=2;
case
when a=1 then b:='a';
when a=2 then b:='b';
when a=3 then b:='c';
else
b:='xxxx';
end case;
dbms_output.put_line('b的值为:'||b);
end;
/
/********************2.2PL/SQL小例子--case分支***********************/

 

3.循环语句(loop、while-loop、for-loop、GOTO实现)
/********************3.1PL/SQL小例子--loop循环***********************/
declare
x number;
begin
x:=0;
loop
x:=x+1;
if x>=3 then
exit;
end if;
dbms_output.put_line('内: '||x);
end loop;
dbms_output.put_line('外: '||x);
end;
/
/********************3.1PL/SQL小例子--loop循环***********************/

 

/********************3.2PL/SQL小例子--while-loop循环***********************/
declare
x number;
begin
x:=0;
while x<=3 loop
x:=x+1;
dbms_output.put_line('内: '||x);
end loop;
dbms_output.put_line('外: '||x);
end;
/
/********************3.2PL/SQL小例子--while-loop循环***********************/

 

/********************3.3PL/SQL小例子--for-loop循环***********************/
begin
for i  in 1..5 loop
--for i  in reverse 1..5 loop
dbms_output.put_line('i: '||i);
end loop;
dbms_output.put_line('for exit');
end;
/

###注意:oracle的for循环不能实现表达式的递增,只能每次增1或减1。
/********************3.3PL/SQL小例子--for-loop循环***********************/

 

/********************3.4PL/SQL小例子--GOTO实现循环***********************/
declare
x number;
begin
x:=0;
<<my_xunhuan>>
x:=x+1;
dbms_output.put_line(x);
if x<3 then
GOTO my_xunhuan;
end if;
end;
/

###注意:可以加一个标签<<my_xunhuan>>,用GOTO跳转
/********************3.4PL/SQL小例子--GOTO实现循环***********************/

 

4.异常处理
/**********************************4.1PL/SQL小例子--系统异常处理********************************************/
declare
test varchar2(20);
begin
select name INTO test from aaa where name='001';
dbms_output.put_line(test);
exception
when NO_DATA_FOUND then
dbms_output.put_line('没有数据,出异常了');
end;
/

###注意:select name INTO test from aaa where name='001';//其中INTO test是将查出来得结果集赋值于test变量,*只能一个字段数据。
        NO_DATA_FOUND为系统异常
/**********************************4.1PL/SQL小例子--系统异常处理********************************************/

 

/*************************************4.2PL/SQL小例子--自定义异常处理*******************************/
declare
hello varchar2(20);
e exception;
begin
select a INTO hello from aaa where a='jun';
if hello<>'B部门' then
raise e;
end if;
dbms_output.put_line(hello);
exception
when e then
dbms_output.put_line('自定义异常好使,不是B部门');
end;
/

###注意:e exception;定义异常变量、raise抛出异常、exception-->when e then引用自己的异常
/*************************************4.2PL/SQL小例子--自定义异常处理*******************************/

 

5.记录的使用(即复合变量,类似java中list)
/********************5.1PL/SQL小例子--记录使用***********************/
declare
type myrecord is record(
id varchar2(10),
name varchar2(20)
);
junrecord myrecord;
begin
select a,b INTO junrecord from aaa where a='jun';
dbms_output.put_line(junrecord.id ||','|| junrecord.name);
end;
/

###注意:定义记录用type类型、 声明记录junrecord myrecord;//其中junrecord为真正引用时的名、 通过junrecord.id获得记录。*记录可以多个字段数据。
/********************5.1PL/SQL小例子--记录使用***********************/

 

/********************5.2PL/SQL小例子--记录使用--某一字段与表类型一致***********************/
declare
type myrecord is record(
id aaa.a%type,
name varchar2(20)
);
junrecord myrecord;
begin
select a,b INTO junrecord from aaa where a='jun';
dbms_output.put_line(junrecord.id ||','|| junrecord.name);
end;
/

###注意:让记录myrecord中id的类型与aaa表a字段类型一致。
/********************5.2PL/SQL小例子--记录使用--某一字段与表类型一致***********************/

 

/********************5.3PL/SQL小例子--记录使用--与表名称类型都一致***********************/
declare
myrec aaa%rowtype;
begin
select * INTO myrec from aaa where a='jun';
dbms_output.put_line(myrec.b ||','|| myrec.a);
end;
/

###注意:myrec aaa%rowtype;我定义的记录与aaa表名称类型都一致 、 myrec.a引用时必须与aaa表名一致
/********************5.3PL/SQL小例子--记录使用--与表名称类型都一致***********************/

 

 

分享到:
评论

相关推荐

    oracle PL-SQL 学习笔记1

    从给定的Oracle PL-SQL学习笔记中,我们可以提炼出一系列关键的知识点,涉及PL-SQL的基本语法、变量声明与赋值、数据类型、表操作、记录与集合处理等核心概念。下面将对这些知识点进行详细阐述: ### 1. 变量声明与...

    oracle笔记 (PL-SQL)

    Oracle笔记(PL-SQL)是关于数据库管理和编程的一个重要主题,主要聚焦于Oracle数据库系统中的结构化查询语言(SQL)的扩展——PL/SQL。PL/SQL是一种过程化语言,结合了SQL的功能,使得开发者能够编写复杂的数据库应用...

    oracle PL-SQL 学习笔记2

    根据提供的文件信息,我们可以将其中的关键知识点归纳如下: ### 1. 创建无参数的Procedure(过程) 在Oracle PL/SQL中,创建一个无参数的过程(Procedure)是...这些内容为深入学习Oracle PL/SQL打下了坚实的基础。

    oracle_commond.rar_odbc api_oracle_oracle 客户端_oracle sql_sql

    此文本文件可能包含了从"Pudn"网站下载资源的记录或者关于Oracle知识的笔记,可能涵盖了一些实用的SQL脚本、问题解决方案或者是数据库设计的思路。 综上所述,"oracle_commond.rar"这个压缩包文件提供了Oracle...

    ORACLE_PlSql-甲骨文学习笔记

    ### ORACLE_PlSql-甲骨文学习笔记 #### 一、创建表 ##### 创建表一 ```sql CREATE TABLE TABLE_NAME ( AAA INTEGER CONSTRAINT PK_TABLE_NAME PRIMARY KEY, BBB VARCHAR2(10) NOT NULL, DOB DATE, CCC VARCHAR...

    玩转oracle学习笔记(四)-数据库操作

    这篇笔记主要聚焦于"玩转Oracle学习笔记(四)",作者通过文档分享了他在数据库管理、查询优化、数据处理等方面的经验。以下是对这些知识点的详细解析: 1. 数据库创建与连接: - Oracle数据库的安装与配置:学习...

    oracle学习笔记-入门基础

    本文主要探讨Oracle数据库的入门基础知识,特别是与索引相关的概念。 首先,我们要理解ROWID的概念。ROWID是Oracle用于标识表中每一行的一个特殊数据类型,它是一个64位的编码,包含了数据对象编号、文件号、块号...

    ORACLE笔记笔记_ZCY

    "ORACLE笔记笔记_ZCY"很可能是某位名为ZCY的学习者在观看浪曦视频教程后整理的Oracle数据库学习笔记。浪曦可能是一个提供IT在线教育的平台,专注于数据库或相关技术的教学。 Oracle数据库系统的核心特性包括: 1. ...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。

    pl/sql学习笔记

    以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...

    oracle_sql笔记

    这篇笔记主要涵盖了Oracle SQL的基础知识、高级特性和实际应用技巧。 一、基础SQL语法 Oracle SQL遵循标准的SQL语法,包括SELECT、INSERT、UPDATE、DELETE四大语句。用于查询数据的基本结构是SELECT字段列表FROM...

    Oracle 10g sql 学习笔记

    Oracle 10g SQL 学习笔记涵盖了Oracle数据库的基础知识,包括版本信息、数据库系统特点、关系型数据库结构、SQL语言、操作环境以及常见的数据库操作。以下是对这些知识点的详细说明: 1. **Oracle 9i基础知识**: ...

    oracle笔记二--plsql 编程.txt

    根据提供的文件信息,我们可以归纳出以下关于Oracle PL/SQL编程的重要知识点: ...通过以上知识点的学习与实践,可以有效地掌握Oracle数据库中PL/SQL编程的核心概念和技术,从而更高效地进行数据库应用程序开发。

    Oracle SQLServer数据库 学习笔记

    3. **PL/SQL**:Oracle特有的过程化语言,用于编写存储过程、函数和触发器,增强数据库的业务逻辑。 4. **数据仓库与OLAP**:Oracle提供强大的数据仓库功能和在线分析处理(OLAP)工具,支持复杂的数据分析。 5. **...

    Oracle_SQL学习笔记

    ### Oracle SQL 学习笔记关键知识点详解 #### 一、SQL 并行查询 并行查询是 Oracle 提供的一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核 CPU 的能力,并行查询能够显著加快...

    PL_SQL个人学习笔记

    根据给定的文件信息,以下是对“PL_SQL个人学习笔记”的详细解读与扩展知识点: ### PL_SQL基础概念 PL/SQL(程序化SQL)是一种强大的过程化编程语言,用于增强Oracle数据库的功能。它将SQL命令与传统的编程语言...

    PL/SQL学习笔记

    PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行代码。PL/SQL可以处理复杂的数据操作和业务逻辑,支持编程结构如循环、...

    精通oracle 10g plsql 编程-学习笔记

    ### 精通Oracle 10g PL/SQL编程学习笔记 #### 一、PL/SQL综述 **1.1 PL/SQL的功能与作用** PL/SQL (Procedural Language for SQL) 是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据处理能力与过程化...

    Oracle_DBA_java.rar_oracle_oracle 笔记

    - Oracle Application Express (Apex):基于Web的Oracle数据库开发工具,使用PL/SQL和Java可快速构建应用。 - JDBC驱动类型:了解 Thin 和 Thick 驱动的区别,选择合适的驱动方式连接Oracle数据库。 5. **Oracle...

Global site tag (gtag.js) - Google Analytics