- 浏览: 242686 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
g_man1990:
g_man1990 写道在同一个文件夹下,jar包是按顺序从上 ...
tomcat中class和jar的加载顺序 -
g_man1990:
在同一个文件夹下,jar包是按顺序从上到下依次加载,按什么顺序 ...
tomcat中class和jar的加载顺序 -
上凌九霄:
谢谢
tomcat中class和jar的加载顺序 -
waitgod:
好文,值得收藏!!
HotSpot是什么? -
xiaomogui:
sd6733531 写道楼主,我想问点问题》
1.mixed, ...
HotSpot是什么?
1. 块(Block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块
块由定义部分,执行部分和异常处理部分组成。
定义部分用于定义常量,变量,游标,异常,复杂数据类型等,Declare。
执行部分用于实现应用模块功能,主要包括要执行的sql语句和pl/sql语句,begin。
异常处理用于处理 块 运行时可能出现的错误,Exception。
end是pl/sql的结束标记;declare,begin和exception后面没有分号,而end后面有。
2. pl/sql标识符命名规范
当使用标识符定义变量,常量时每行只能定义一个标识符;标识符只能使用字母,数字
下划线,$和#,如要使用其它字符则必须加上双引号;标识符名称必须以字符(A-Z a-z)
开头,并且最大长度30个字符,如果以其他字符开头,必须加上双引号;不能使用oracle关键字
,如果要使用则必须加上双引号。
注意:如果把一个带有单引号的字符串赋给一个变量,可以使用 q'[要赋的值]' 格式;
s_var := q'[i'm a boy!]'; -- 把 i'm a boy! 赋给变量s_var
3. pl/sql的块划分为匿名块,命名块,子程序和触发器。
匿名块:没有名字的pl/sql块。
DECLARE v_name varchar2(10); BEGIN SELECT t.name INTO v_name FROM emp t WHERE t.id = &id; dbms_output.put_line('名字是:' || v_name); END; 3. 命名块:有名字(标示)的pl/sql,块前使用《》加以标示 <<block1>> DECLARE v_name varchar2(10); v_age number(4); BEGIN <<block2>> BEGIN SELECT t.name INTO v_name FROM emp t WHERE t.id = &id; dbms_output.put_line('名字是:' || v_name); END; SELECT t.age INTO v_age FROM emp t WHERE t.name = v_name; dbms_output.put_line('年龄:' || v_age); END;
3.子程序:包括存储过程,函数和包
存储过程:用于执行特定的操作,可以指定输入参数(in)或者输出参数(out),不指定默认输入。
CREATE PROCEDURE test_update(name VARCHAR2, age NUMBER) IS BEGIN UPDATE emp t SET t.age = number WHERE t.name = name; COMMIT;--这里不加可以吗? END;
函数:用于返回特定数据。函数的头部必须包含return字句,函数体内必须包含return语句返回的数据
CREATE FUNCTION test_function(name VARCHAR2, age NUMBER) RETURN VARCHAR2 IS v_addr VARCHAR2(100); BEGIN SELECT '中国.山东' || t.addr INTO v_addr FROM emp t WHERE t.name = name and t.age = age; RETURN v_addr; END;
包:用于逻辑组合相关的存储过程和函数,由包规范和包体组成。包规范用于定义公用的常量, 变量,存储过程和函数。
-- 包规范知识定义了一个存储过程和函数而没有实现代码 CREATE PACKAGE test_pkg IS PROCEDURE test_procedure(name VARCHAR2, age NUMBER); FUNCTION test_function(name VARCHAR2, age NUMBER) RETURN NUMBER; END;
包体:
CREATE PACKAGE BODY test_pkg IS PROCEDURE test_procedure(name VARCHAR2, age NUMBER) IS BEGIN UPDATE emp t set t.name = name WHERE t.age = age; END; FUNCTION test_function(name VARCHAR2, age NUMBER) RETURN NUMBER IS v_slary NUMBER(4, 1); BEGIN SELECT t.slary INTO v_slary WHERE t.name = name and t.age = age; RETURN NUMBER v_slary; END; END;
在使用包中的存储过程和函数时,必须在存储过程或者函数名之前加上包名作为前缀
(包名.子程序名)
4. 触发器:隐形执行的存储过程,必须指定触发事件以及触发操作,触发事件包括insert,update和delete;而触发操作实际上是一个pl/sql块。
-- 当更新dept表中的d_name列时更新emp表中的d_name列 CREATE TRIGGER test_trigger AFTER UPDATE OF d_name ON dept FOR EACH ROW BEGIN UPDATE emp t SET t.d_name = :new.d_name WHERE t.d_name = o :d_name; END;
5. pl/sql数据类型:标量(Scalar)类型,复合(Composit)类型,参照(Reference)类型和LOB(Large Object)类型。
标量(Scalar)类型:只能存放单个数值的变量;定义标量时必须指定数据类型。
varchar2(n) : 定义可变长字符串,最大值32767字节;定义变量时必须指定长度。varchar2定义 列时最大长度是4000字节。
char(n) : 定义变量时如果没有指的那个长度默认为1, 定义列数据时最大长度是2000字节。
boolean :布尔类型值为true,false和null。表列不能使用该数据类型
binary_integer:定义整数-2147483647到2147483647
binary_float 和 binary_double 是oracle10新增,分别用来定义单精度浮点数和双精度浮点数
binary_float 应带有后缀f ,binary_double应带后缀d
定义标量变量:
v_name varchar2(10);
v_age number(10,4);--整数部分是6位
v_sex constant vachar(10):='woman';
v_date Date;
v_flag boolean not null default false;
--如果在定义变量时没有指定初始值那么变量的初始值为null。
%TYPE:当使用%type定义变量时,它会按照数据库列或者其他变量来确定新变量的类型和长度。
DECLARE
v_name emp.name%TYPE;
v_t_name v_name%TYPE;
v_age CONSTANT NUMBER(2) := 11;
BEGIN
SELECT name, age INTO v_name, v_age FROM emp WHERE emp.id = '45';
v_t_name := v_name;
dbms_output.put_line('名字是:' || v_t_name);
END;
复合(Composit)类型:
复合变量用来存放多个值的变量。pl/sql复合数据类型包括记录,表,嵌套表以及数组(varry);
记录:首先在定义部分定义记录类型和记录变量,然后再执行部分引用该记录变量
DECLARE
TYPE test_type_emp IS RECORD(
v_name emp.name%TYPE,
v_age emp.age%Type);
v_r_emp test_type_emp; -- 定义一个record变量test_type_emp
BEGIN
SELECT name, age INTO v_r_emp FROM emp WHERE emp.id = '45';
dbms_output.put_line('名字是:' || v_r_emp.v_name);
END;
嵌套表(Nested Table):类似高级语言的数组,只是嵌套表的个数没有限制。嵌套表可以作为
表列的数据类型。pl/sql表不能作为表列的数据类型。 --创建嵌套表
CREATE OR REPLACE TYPE test_emp_type AS OBJECT
(
name varchar2(10),
age number
) ;
CREATE OR REPLACE TYPE emp_type IS TABLE OF test_emp_type;
创建嵌套表后,就可以在表列或对象属性中将其作为用户自定义类型来引用。
值得注意的是当使用嵌套表作为表列时必须专门为其制定专门的存储表。
CREATE TABLE hoom( hname varchar2(100); vemp emp_array )NESTED TABLE STORE AS vemp
数组:类似嵌套表,varray的元素是有限制的。当使用varray数组时要先建立一个varray。当建立了varry类型之后,可以在表列或对象属性中将其作为用户自定义数据类型。
CREATE OR REPLACE TYPE test_emp_type AS OBJECT ( name varchar2(10), age number ) ; CREATE OR REPLACE TYPE emp_array IS VARRY(10) OF test_emp_type; CREATE TABLE hoom( hname varchar2(100); vemp emp_array )
参照变量: 用于存放数值指针的变量,使用参照变量,可以使应用程序共享相同对象包括游标(Cursor)和对象类型变量(obj_type)
DECLARE TYPE c1 IS REF CURSOR; emp_cursor c1; v_name emp.name%TYPE; v_age emp.age%TYPE; BEGIN OPEN emp_cursor FOR SELECT name, age FROM emp WHERE emp.name = 'a'; LOOP FETCH emp_cursor INTO v_name, v_age; EXIT WHEN emp_cursor%notfound; dbms_output.put_line('名字是:' || v_name); END LOOP; CLOSE emp_cursor; END;
发表评论
-
乐观锁和悲观锁
2012-03-02 00:18 0在Web项目中,离线并发 ... -
oracle之connect by
2012-03-02 00:07 0// 输出 1 - 12 select rownum ... -
lpad函数
2012-03-02 00:01 0lpad函数,在字符串的左侧添加指定字符串。 用法:l ... -
flashback
2012-03-01 23:55 0如果对数据库进行了更新或者删除操作 ,如果想回退到操作 ... -
ojdbc6.jar
2011-11-15 21:10 0websphpere 配置oracle驱动jar包! -
oracle小数点前的零
2011-11-09 20:32 0在oracle中 , 小于1的小数(如0.12)如果是numb ... -
oracle三范式
2011-10-19 23:57 0范式:英文名称是 Normal Form,它是英国人 E.F. ... -
oracle列名称大小写
2011-10-19 23:47 0oracle的列名是不区分大小写的,但是当我们给列起别名的时候 ... -
oracle日志管理
2011-02-05 13:23 01. 新建一个oracle实例 开始-->所有程序 ... -
oracle约束基础
2011-02-05 13:11 0约束 保证数据满足一定的要求 非空约束 :不允许 ... -
oracle索引基础
2011-02-05 13:08 0-- 查看索引select * fro ... -
oracle数据库忘记管理员密码
2011-02-05 12:52 0被授予SYSOPER/SYSDBA系统权限的用户才存在于密码 ... -
oracle基础之sql基础知识
2011-01-05 01:42 17061. sql(Structured Query Languag ... -
pm_trigger_system_function 草稿
2011-01-03 02:00 0-- execute immediate -- execut ... -
EXP-00056: 遇到 ORACLE 错误 6550
2010-12-30 00:28 6803oracle10g的客户端导出oracle9i的数据库数据以上 ... -
ORA-01403 no data found
2010-12-28 01:16 3054select t.name into v_name from ... -
RemoteOperationException: ERROR: Wrong password for user
2010-12-21 01:15 2568RemoteOperationException: ... -
oracle基础之数据字典
2010-12-07 22:52 13361.数据字典概念 数据字典是Oracle数据库的核 ... -
oracle基础之存储结构
2010-12-07 22:52 14081. 存储结构 Oracle数据库的存储结构分为逻辑存储结 ... -
oracle基础之基本结构(2)
2010-12-07 22:52 10611. Oracle数据库启动 ...
相关推荐
1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、数据类型、流程控制语句(如IF-THEN-ELSIF,FOR循环,WHILE循环)、异常处理(BEGIN-EXCEPTION-END结构)等。 2. **函数与过程**:如何定义和调用用户自定义的...
#### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。 **关键词**:Oracle 9i、PL/SQL #### ...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
首先,让我们探讨Oracle PL/SQL的基础知识。PL/SQL是Oracle数据库的内置编程语言,由块构成,包括声明部分、执行部分和异常处理部分。块可以是匿名块(即直接在SQL*Plus或其他工具中编写的一次性执行的代码),也...
### Oracle SQL 和 PL/SQL 知识点 #### 一、Oracle SQL 概述 1. **定义**:Oracle SQL 是一种结构化查询语言(Structured Query Language),它是用于管理关系数据库的标准语言。 2. **功能**: - 数据定义(Data ...
本书以Oracle的最新版本12c为基础,呈现的是最新的PL/SQL技术,这一点也优于已出版的同类书.全书以一个综合性的人力资源项目为驱动,不仅能将各个理论知识点很好地融入实践,而且还能让读者体验完整的项目实操过程...
### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 ...本书不仅覆盖了PL/SQL的基础知识,还包括了大量的实战经验和高级主题,对于想要深入了解和掌握Oracle数据库的读者来说是非常宝贵的资源。
PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...
Oracle PL/SQL Fundamentals是Oracle University为学生设计的一份培训指南,旨在深入理解并掌握Oracle数据库中的PL/SQL编程基础。PL/SQL是Oracle数据库特有的结构化查询语言扩展,它结合了SQL的强大功能与过程性编程...
作为Oracle数据库的核心组成部分之一,PL/SQL在数据库应用程序开发中扮演着至关重要的角色。 **1.1 PL/SQL可用的SQL语句** 在PL/SQL环境中可以使用的SQL语句主要包括以下几种: - **INSERT**:用于向表中插入新...
本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...
1. **PL/SQL基础**:涵盖PL/SQL的基本语法,包括变量声明、常量定义、条件语句(IF-THEN-ELSIF-ELSE)、循环结构(WHILE, FOR)、异常处理(BEGIN-EXCEPTION-END)以及子程序(PROCEDURE和FUNCTION)的创建与调用。...
1. **PL/SQL基础**:手册可能会从基础开始,介绍PL/SQL的基本结构,包括声明变量、常量、游标、记录类型等。还会讲解如何编写存储过程、函数和触发器。 2. **控制流程语句**:这包括条件判断(IF-THEN-ELSIF-ELSE)...
以下是对"Oracle PL/SQL学习官方教材"中可能包含的主要知识点的详细解释: 1. **基础概念**:首先,教材会介绍PL/SQL的基本概念,包括块(Block)、变量(Variable)、常量(Constant)、数据类型(Data Types)和...
本书《精通Oracle10g PL/SQL编程》为读者提供了一个系统性的学习路径,从基础知识到高级应用,从具体技巧到最佳实践,涵盖了PL/SQL编程的方方面面。通过本书的学习,读者将能够有效地提高Oracle数据库编程的效率和...
Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...
2. PL/SQL基础:包括PL/SQL块的结构、变量和数据类型、控制流语句(如IF语句、循环)、错误处理和异常管理。 3. 过程和函数:解释如何在PL/SQL中创建和使用过程和函数,包括参数传递、返回值和子程序的封装。 4. ...
通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法,而且可以掌握sql语句和pl/sql的各种基础知识和高级特征(记录...
学习Oracle 8 PL/SQL程序设计,你需要掌握以下几个关键知识点: 1. **基本语法和数据类型**:了解PL/SQL的基本结构,包括声明变量、常量、游标、表类型等,并熟悉各种内置数据类型,如NUMBER、VARCHAR2、DATE等。 ...
通过学习本书,读者不仅可以掌握PL/SQL的基础编程知识(嵌入SQL语句和编写子程序),而且还可以掌握PL/SQL的所有高级开发特征(使用记录类型、集合类型、对象类型和大对象类型)。另外,本书还为应用开发人员提供了大量...