- 浏览: 10233118 次
- 性别:
- 来自: 深圳
博客专栏
-
Oracle基础
浏览量:462633
-
springMVC介绍
浏览量:1775527
-
Mybatis简介
浏览量:1398373
-
Spring整合JMS
浏览量:395024
-
Ehcache简介
浏览量:679990
-
Cas简介
浏览量:530895
-
Spring Securi...
浏览量:1183955
-
Spring基础知识
浏览量:467939
-
Spring Aop介绍
浏览量:151403
-
JAXB简介
浏览量:68154
文章分类
- 全部博客 (388)
- 配置文件 (2)
- dwr (2)
- 安全 (4)
- 电子邮件 (3)
- CKEDITOR (3)
- Cas (10)
- ehcache (11)
- elastic-job (5)
- extjs4 (6)
- freemarker (2)
- hibernate (5)
- itext (1)
- JasperReport (4)
- java (24)
- JAXB (9)
- jbpm4 (2)
- jfreeChart (3)
- Jms (5)
- jquery (7)
- jsp (4)
- Linux (1)
- Lucene (1)
- maven (7)
- mybatis (23)
- MySQL (6)
- nginx (2)
- oracle (29)
- poi (8)
- 日志 (1)
- redis (1)
- Servlet (5)
- 实用技巧 (5)
- Spring (70)
- SpringMVC (29)
- spring Security (20)
- struts2 (5)
- svn (1)
- Tomcat (1)
- Webservice (8)
- web前端 (5)
- Weblogic (7)
- 问题 (6)
- xml (3)
- Spring Boot (26)
- spring cloud (18)
- 面试 (1)
- RocketMQ (5)
最新评论
-
18335864773:
推荐用pageoffice 生成 word。POI处理Offi ...
POI生成Web版Word文件 -
234390216:
skran 写道大兄弟文章写的不错,排版有点问题,代码长了既没 ...
Spring Boot(05)——SpringApplication介绍 -
skran:
大兄弟文章写的不错,排版有点问题,代码长了既没换行也没滚动条
Spring Boot(05)——SpringApplication介绍 -
Caelebs:
Ehcache(04)——设置缓存的大小 -
234390216:
thaIm 写道不知道RestTemplate 默认的链接数、 ...
Spring(30)——RestTemplate介绍
1.变量
2.常量
3.基本程序结构和语句
PL/SQL能够驻留在Oracle数据库服务器和Oracle开发工具两个环境中。在这两个环境中,PL/SQL引擎接受任何PL/SQL块和子程序作为输入,引擎执行过程语句将SQL语句发送给Oracle服务器的SQL语句执行器执行。
1、PL/SQL变量
(1)变量的声明:
变量通常是在PL/SQL块的声明部分定义的,每一个变量都有一个特定的类型。
变量定义的基本格式为:
<变量名> <数据类型>[(宽度):=<初始值>]
如定义一个名为countNum的number类型变量,初始值为1,可以如下写:
countNum number := 1;
--变量的基本命名规则如下: --a.变量名必须以字母开头 --b.变量长度不超过30个字符 --c.变量名中不能有空格
(2)变量的属性
%用于表示属性提示符。
%type属性。%type属性提供了变量和数据库列的属性,有了这个属性是非常方便的,假设现在有个表A,里面有字段B,现在要定义一个变量C,需要它的数据类型和字段B一样,这个时候我们可以不知道B的数据类型,直接使用B%type就可以了,如:C B%type。
%rowtype属性。这个属性提供了表示一个表中一行记录的数据类型。有了它我们就可以方便的用一个变量表示游标中的一行,如cursorRecord cursorName%rowtype,其中,cursorRecord表示游标一行的变量名,cursorName表示对应游标的名称,利用%rowtype就可以取到一行的记录类型,这样以后在取数据的时候,就可以直接使用
fetch cursorName into cursorRecord中了。示例代码:
declare cursor moduleCursor is select * from t_module; moduleRecord moduleCursor%rowtype; begin open moduleCursor; fetch moduleCursor into moduleRecord; while moduleCursor%found loop dbms_output.put_line(moduleRecord.name || '**********************'); fetch moduleCursor into moduleRecord; end loop; close moduleCursor; end;
(3)自定义数据类型
PL/SQL还支持用户自定义数据类型。下面是自定义一个PersonRecord数据类型的示例:
declare type PersonRecord is record ( name varchar(20), age number(3) );
下面是PersonRecord的实际应用示例:
declare type PersonRecord is record ( name varchar(20), id number(3) ); person PersonRecord; begin select name,id into person from t_employee where username='admin'; dbms_output.put_line('**********' || person.name); end;
2、PL/SQL常量
常量是指在程序运行过程中值不变的量。
常量声明的基本格式如下:
<常量名> constant <数据类型> := <值>
如定义一个整型常量num,值为5,可以如下写:
num constant integer := 5;
3、PL/SQL基本程序结构和语句
(1)条件结构
a.if-then结构
语法格式:
if booleanExpression then runExpression end if; --当booleanExpression的结果为真时就执行runExpression部分,注意用end if结束if语句。
示例代码:
declare totalCount number; begin select count(*) into totalCount from t_module; if totalCount > 0 then dbms_output.put_line('共有' || totalCount || '条记录'); end if; end;
b.if-then-else结构
语法格式:
if booleanExpression then runExpression else runExpression2 end if; --该结构表示当booleanExpression的结果为true时执行runExpression,否则执行runExpression2,注意要结束end if;
示例代码:
declare a number; b number; c number; begin a := 1; b := 2; c := 3; if a=1 then c := c + a; else c := c + b; end if; DBMS_OUTPUT.PUT_LINE(c); dbms_output.put_line(c); end;
c.if-then-elsif-then-else结构
语法格式:
if booleanExpression then runExpression1 elsif booleanExpression2 then runExpression2 else runExpression3 end if; --该结构表示当booleanExpression为true时执行runExpression1,否则当booleanExpression2为true时执行runExpression2,否则执行runExpression3
(2)循环结构
编写循环结构的时候一定要确保有退出条件满足。
a.loop-exit-end循环
语法格式:
loop runExpression; --执行循环体 if booleanExpression then --判断是否满足退出条件 exit; --当满足退出条件时即退出循环 end if; --结束if语句 end loop; --结束loop语句
示例代码,利用loop-exit-end循环求10的阶乘:
declare n number := 10; results number := 1; begin loop results := results * n; n := n - 1; if n=0 then exit; end if; end loop; dbms_output.put_line('10的阶乘是:' || results); end;
b.loop-exit-when-end循环
语法格式:
loop runExpression; /*执行循环体*/ exit when booleanExpression /*测试是否符合退出条件,符合即退出*/ end loop;
示例代码,利用此结构求10的阶乘:
declare a number := 1; b number := 1; begin loop b := a * b; a := a + 1; exit when a > 10; end loop; dbms_output.put_line('the result is: ' || b); end;
c.while-loop-end循环
语法格式:
while booleanExpression --测试是否符合退出条件 loop runExpression; --执行循环体 end loop; --此种结构先判断是否符合条件再进行循环,而上面的两种是先执行一次循环再判断是否符合条件。
示例代码:
declare a number := 1; b number := 1; begin while a<=10 loop b := a * b; a := a + 1; end loop; dbms_output.put_line('the result is: ' || b); end;
d.for-in-loop-end循环
语法格式:
for countVar in count1..countn --定义跟踪循环的变量 loop runExpression --执行循环体 end loop; --countVar是循环变量,表示当前循环的当前值,in确定循环变量的初值count1和终值countn,如果循环变量的值小于终值则执行循环体,否则就退出 --循环,每循环一次循环变量的值自动增加一个步长。
示例代码:
declare b number := 1; begin for c in 1..10 loop b := b * c; end loop; dbms_output.put_line('the result is: ' || b); end;
(3)选择语句
case语句:可以使用简单结构,对数值列表做出选择。
语法格式:
case inputName when expression1 then result1 when expression2 then result2 when expressionn then resultn else result end; -- case语句会依次比较expressionn与inputName的值,若相等,则返回resultn,否则继续往下判断,若都不满足,则返回else中result的值。
示例代码:
declare num1 number; begin num1 := 6; case num1 when 1 then dbms_output.put_line('the result is no.1'); when 2 then dbms_output.put_line('the result is no.2'); when 3 then dbms_output.put_line('the result is no.3'); else dbms_output.put_line('the result is not in top 3'); end case; end;
发表评论
-
使用connect by进行级联查询
2014-08-03 20:02 27432使用connect by进行级联查询 ... -
decode—对case的简化
2014-07-29 23:08 13772decode—对case的简化 ... -
intersect的用法简介
2014-07-28 09:29 17849intersect的用法简介 在Or ... -
minus的用法简介
2014-07-22 19:27 24316minus的用法简介 “minus” ... -
Oracle——24定时任务
2013-11-29 23:06 16624我们有时候会这么一个需求:希望数据 ... -
Oracle——23闪回操作(flashback)
2012-07-15 16:33 22675Oracle的闪回功能可 ... -
Oracle——22序列(sequence)
2012-07-01 20:18 14981当一个序列第一次被调用时,它将返回一个预定值,在以后的 ... -
Oracle——21使用数据泵data bump进行导入和导出
2012-07-01 09:06 17255data pump(数据泵)可以实现在测试环境、开 ... -
Oracle——20数据库恢复与备份
2012-06-30 22:30 14667备份是将数据库中的 ... -
Oracle——19审计
2012-06-30 22:18 14576审计是监视和记录所选用户的数据活动的。 ... -
Oracle——18用户、角色和权限信息的视图总结
2012-06-12 11:05 15436Oracle在sys用户方案中内置了许多视图,我们可以利 ... -
Oracle——17概要文件
2012-06-12 09:54 14543概要文件用于限制由 ... -
Oracle——16用户、角色和权限
2012-06-11 08:16 14592一、用户 1、利用SQL创建用户的语法格式如下: ... -
Oracle——15触发器
2012-06-11 08:13 16527触发器可实现表间数据的一致性和完整性。当一个基表被修改时 ... -
Oracle——14存储过程
2012-06-10 07:45 14849存储过程是存放在数据字典中的程序块,它可以在不同用户 ... -
Oracle——13集合
2012-06-10 07:24 15090PL/SQL语言的集合类似 ... -
Oracle——12异常
2012-06-09 08:31 14852语句执行过程中,可能会因为异常造成损失,甚至是系统崩溃。 ... -
Oracle——11游标
2012-06-09 08:28 14421PL/SQL语句通过游标提供了对一个结果集进行逐行处理的 ... -
Oracle——10用户自定义函数
2012-06-08 08:02 18833用户自定义函数是存储在数据库中的代码块,可以把值返回到 ... -
Oracle——09常用系统内置函数
2012-06-08 07:40 15104to_char();--转换为字符串 to_num ...
相关推荐
### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...
PL/SQL是Oracle专为数据库管理设计的一种过程化编程语言,它结合了SQL查询语言的威力与高级编程语言的灵活性,使得数据库开发者能够创建复杂的应用程序逻辑。 在"Oracle Database 12c PL/SQL开发指南(第7版)"这...
- **存储过程**:一组PL/SQL语句,可重复调用,提高代码复用性。 - **函数**:类似于过程,但返回一个值,可用于计算或验证。 - **触发器**:在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行的PL/...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
- **SQL语句的执行**:介绍如何在PL/SQL代码中嵌入SQL语句,包括查询、插入、更新和删除操作。 - **动态SQL**:探讨如何构造和执行动态SQL语句,这对于需要根据运行时条件生成SQL的情况非常有用。 - **SQL*Plus命令*...
过程是PL/SQL中一种用来封装逻辑的单元,它包含了一系列的SQL语句和PL/SQL代码,可以执行特定的任务。过程与匿名程序块的区别在于它具有名称和参数,能够被重复调用。创建过程的语法中涉及到参数模式,包括IN、OUT、...
执行部分包含SQL语句和PL/SQL控制结构,如循环、条件判断等;异常处理部分用于捕获和处理程序运行时可能出现的错误。 2. **数据类型**:PL/SQL支持多种数据类型,包括数值类型(如NUMBER)、字符串类型(如VARCHAR2...
8. **动态SQL**:允许在PL/SQL程序中构建和执行SQL语句,增强了灵活性,特别是在需要动态构建复杂查询时。 9. **包(PACKAGE)**:将相关的变量、常量、过程和函数组合在一起,形成一个逻辑单元,提高代码的组织性...
在Oracle PL/SQL中,我们可以通过使用SQL语句来与数据库进行交互,例如SELECT用于查询数据,INSERT、UPDATE和DELETE用于修改数据。PL/SQL还提供了游标(CURSOR)机制,允许我们逐行处理查询结果。此外,PL/SQL还支持...
PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一种过程化编程语言,它结合了SQL的查询功能和传统编程语言的控制结构,使得数据库管理和应用程序开发更为高效和灵活。...
根据提供的文件信息,我们可以推断出本书主要关注的是Oracle SQL 和 PL/SQL 的掌握与应用。下面将基于这些信息来生成相关的知识点。 ### Oracle SQL 和 PL/SQL 知识点 #### 一、Oracle SQL 概述 1. **定义**:...
1. **PL/SQL概述**:了解PL/SQL的基本概念,包括它的结构、块(DECLARE、BEGIN、END)以及如何在SQL*Plus或其他开发工具中执行PL/SQL程序。 2. **变量和数据类型**:深入学习PL/SQL中的变量声明,包括内置的数据...
1. **PL/SQL基础**:PL/SQL是由SQL语句、控制结构和过程式编程元素组成的。它允许开发者编写存储过程、函数、触发器等,以实现更复杂的业务逻辑。01.pdf可能涵盖这些基础概念。 2. **变量与数据类型**:在PL/SQL中...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...
8. **索引和性能优化**:手册可能也会涉及如何利用索引来提高PL/SQL程序的执行效率,以及如何分析和优化SQL语句。 9. **并发和锁定**:在多用户环境下,理解并发控制和锁定机制是必要的。手册可能会讨论如何处理...
本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...
10. **性能优化**:教材可能涵盖性能监控和调优技术,如分析SQL语句的执行计划,使用绑定变量,以及如何使用PL/SQL Profiler进行性能分析。 11. **数据库对象的动态SQL**:通过EXECUTE IMMEDIATE和DBMS_SQL包,可以...
4. **动态SQL**:探讨如何在PL/SQL中执行SQL语句,包括EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE模式,以及绑定变量的应用。 5. **包(PACKAGE)**:详细解释包的概念,包括公共和私有部分,以及如何通过包来组织...
4. **SQL语句的嵌入**:PL/SQL允许在程序中直接嵌入SQL语句,进行数据查询、插入、更新和删除操作。 5. **控制结构**:深入理解IF、ELSIF、ELSE、CASE语句以及循环结构(WHILE、FOR),这些是实现逻辑流程的关键。 ...
3. **控制结构**:PL/PROCEDURE和PL/FUNCTION是PL/SQL的基本程序单元,前者不返回值,后者可以返回一个值。流程控制结构有IF-THEN-ELSIF-ELSE、CASE、FOR循环、WHILE循环和GOTO。 4. **SQL操作**:PL/SQL可以直接...