随笔分类 -  SQL/PLSQL 基础

1
摘要:PL/SQL变长数组时PL/SQL集合数据类型中的一种,其使用方法与PL/SQL嵌套表大同小异,唯一的区别则是变长数组的元素的最大个数是有限制的。也即是说变长数组的下标固定下限等于1,上限可以扩展。下面给出具体的描述及其使用方法。一、变长数组语法 TYPE type_name IS {VARRAY | VARYING ARRAY} (size_limit) OF -->type_name 用于指定varray类型名,size_limit 定义varray元素的最大个数 element_type [NOT NULL]; -->element_type用于指定元素的数据类型 varra 阅读全文
posted @ 2012-03-23 15:47 ajuanabc 阅读(340) 评论(0) 推荐(0) 编辑
摘要:通常情况下,在PL/SQL中,处理单行单列的数据可以使用标量变量,而处理单行多列的数据则使用PL/SQL记录是不错的选择。单列多行数据则由联合数组或嵌套表来完成,其特点是类似于单列数据库表。在Oracle 9i 之前称为PL/SQL索引表,9i 之后称之为联合数组。嵌套表也是集合类型中的一种,下面分别介绍这两种集合数据类型的使用方法。一、联合数组1、联合数组的特性 类似于一张简单的SQL表,按照主键进行检索数据 其数据行并不是按照预定义的顺序存储。当使用变量来检索其数据时,每行数据会分配一个连续的下标且从1开始。 下标可以为负值,且下标的数据类型支持binary_integer,pls_in. 阅读全文
posted @ 2012-03-20 10:32 ajuanabc 阅读(305) 评论(0) 推荐(0) 编辑
摘要:对 DBA 而言,CREATE TABLE AS 可谓是家常便饭,顺手拈来。需不知该方式虽然简单,但疏忽也容易导致意想不到的问题。笔者前阵子就碰上了这样的事情。由于是对原表进行克隆,且数据存储在不同的表空间,因此毫不犹豫地使用了CREATE TABLE AS,结果在运行package时,error...--1、非空约束遗失 -->使用create table as 来创建对象 scott@CNMMBO> create table tb_dept as select * from dept where 1=0; Table created. scott@CNMMBO> desc 阅读全文
posted @ 2012-03-16 17:32 ajuanabc 阅读(294) 评论(0) 推荐(0) 编辑
摘要:case语句与case表达式是plsql流程控制的重要组成部分,尽管其使用方法较为简单,但容易混淆。本文将描述case语句与case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项。一、简单case语句-->语法 CASE SELECTOR WHEN EXPRESSION 1 THEN STATEMENT 1; WHEN EXPRESSION 2 THEN STATEMENT 2; ... WHEN EXPRESSION N THEN STATEMENT N; ELSE STATEMENT N+1; END CASE; --简单的case语句是指SELECTOR中得到的值或结果 阅读全文
posted @ 2012-03-10 17:20 ajuanabc 阅读(471) 评论(0) 推荐(0) 编辑
摘要:编译无效对象是DBA与数据库开发人员常见的工作之一。对于编译过程中的错误该如何去捕获,下面给出两种捕获错误的方法。一、当前数据库版本信息及无效对象 1、查看当前数据库版本 SQL> select * from v$version; BANNER ------------... 阅读全文
posted @ 2011-10-28 09:27 ajuanabc 阅读(356) 评论(0) 推荐(0) 编辑
摘要:--===============================-- SQL 基础--> NEW_VALUE 的使用--===============================通常的使用方法为: column column_name new_value var_name new_value是将所获得的列值赋予到变量名,然后该变量名可以参与后续处理下面演示new_value的用法 usr1@ORCL> define length="15" --定义变量length usr1@ORCL> set feedback off; --查询结束时,没有查询结果 阅读全文
posted @ 2011-02-18 11:31 ajuanabc 阅读(202) 评论(0) 推荐(0) 编辑
摘要:--============================-- PL/SQL --> 动态SQL的常见错误--============================ 动态SQL在使用时,有很多需要注意的地方,如动态SQL语句结尾处不能使用分号(;),而动态PL/SQL结尾处需要使用分号(;),但不能使用正斜杠结尾(/),以及shcema对象不能直接作为变量绑定。本文介绍了动态SQL的常见问题。一、演示动态SQL的使用 下面的示例中,首先使用动态SQL基于scott.emp创建表tb2,然后里直接使用动态SQL从新表中获取记录数并输出。再接下来是定义了一个动 态PL/SQL代码并执行以 阅读全文
posted @ 2011-01-05 15:18 ajuanabc 阅读(294) 评论(0) 推荐(0) 编辑
摘要:--====================-- PL/SQL --> 动态SQL--==================== 使用动态SQL是在编写PL/SQL过程时经常使用的方法之一。很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行SQL查询语句,对于这种情况需要使用动态SQL来完成。再比如,对于分页的情况,对于不同的表,必定存在不同的字段,因此使用静态SQL则只能针对某几个特定的表来形成分页。而使用动态的SQL,则可以对不同的表,不同的字段进行不同的分页。这些情况的处理通常都是用动态SQL来完成。本文讲述了动态SQL的日常用法。一、动态SQL和静态SQL 1. 阅读全文
posted @ 2011-01-05 15:06 ajuanabc 阅读(212) 评论(0) 推荐(0) 编辑
摘要:--==============================-- PL/SQL --> INSTEAD OF 触发器--============================== INSTEAD OF 触发器常用于管理编写不可更新的视图,INSTEAD-OF触发器必须是行级的。 可以用INSTEAD OF触发器来解释INSERT、UPDATE和DELETE语句,并用备用的程序代码替换那些指令。一、不可更新视图 基于下列情形创建的视图,不可直接对其进行DML操作 使用了集合操作运算符(UNION,UNION ALL ,INTERSECT,MINUS) 使用了分组函数(MIN,MAX, 阅读全文
posted @ 2010-12-25 20:07 ajuanabc 阅读(219) 评论(0) 推荐(0) 编辑
摘要:--=======================-- PL/SQL --> DML 触发器--======================= 何谓触发器?简言之,是一段命名的PL/SQL代码块,只不过该代码块在特定的条件下被触发并且执行。对于这样的代码我们称之为触发器。触发器根据触发类型的不同又分为不同级别的触发器,下面将给出触发器的分类,定义,以及使用的示例。一、触发器的相关概念 1.触发器的分类 通常根据触发条件以及触发级别的不同分为DML触发器,INSTEAD OF 触发器,系统事件触发器。 DML触发器 ORACLE 对DML语句进行触发,可以在DML操作前或操作后进行触发,并 阅读全文
posted @ 2010-12-25 20:01 ajuanabc 阅读(235) 评论(0) 推荐(0) 编辑
摘要:--=============================-- PL/SQL --> DBMS_DDL包的使用--============================= 为了便于建立性能良好的PL/SQL程序,Oracle提供了大量的系统包供使用。Oracle提供的这些包扩展并增强了数据库的一些功能,以及突破了PL/SQL的一些限制。本文讲述了Oracle提供的包DBMS_DDL,以及其使用方法。一、 使用DBMS_DDL包可以对包,包体,存储过程,函数,触发器等等进行编译,以及为数据库对象提供一些统计信息。 下面列出几个常用的过程 1.ALTER_COMPILE --编译对象 阅读全文
posted @ 2010-12-25 19:54 ajuanabc 阅读(302) 评论(0) 推荐(0) 编辑
摘要:--==========================-- PL/SQL --> 包重载、初始化--========================== 包的重载功能类似于C++中函数的重载功能,即拥有多个同名的子程序,每个同名子程序使用不同的参数。用户可以传递不同的参数来调用同名但参数不同的子程序,此即为包的重载功能。简言之,不管传递什么样的参数,所完成的任务是相同的。假定需要查询部门所在的位置,输入参数部门编号或部门名称都会返回同样的结果。对外部程序而言,似乎是调用的同一个子程序,但其始质调用了不同的子程序,执行了不同的代码。 有关包的创建与管理请参考:PL/SQL --> 阅读全文
posted @ 2010-12-22 16:32 ajuanabc 阅读(245) 评论(0) 推荐(0) 编辑
摘要:--===============================-- PL/SQL -->隐式游标(SQL%FOUND)--=============================== 在PL/SQL中,游标的使用分为两种,一种是显示游标,一种是隐式游标,显示游标的使用需要事先使用declare来进行声明,其过程包括声明游标,打开游标,从游标提取数据,关闭游标。该方式多用于处理select语句返回的多行数据的情形。而隐式游标则由则由系统自动定义,当DML被使用时,Oracle为每一个不属于显示游标的DML语句都创建一个隐式游标,其声明、打开、关闭都是系统自动进行。多用于配合DML返回 阅读全文
posted @ 2010-12-22 16:23 ajuanabc 阅读(186) 评论(0) 推荐(0) 编辑
摘要:--============================-- PL/SQL --> 包的创建与管理--============================ 包,是一个逻辑集合,是由PL/SQL类型以及PL/SQL子程序的集合。PL/SQL类型包括table类型,record类型。PL/SQL项则包括游标,游标变量。PL/SQL子程序包括过程,函数等。可以说包可谓是包罗万象。是所有PL/SQL相关资源的汇总。 包的使用可以简化应用程序设计,实现信息掩藏,子程序重载等功能。 包的优点 1.模块化:将函数,子程序全部融合在一起,使得成为一个有机的整体,封装了相关的结构。 2.易于维护: 阅读全文
posted @ 2010-12-18 21:07 ajuanabc 阅读(175) 评论(0) 推荐(0) 编辑
摘要:--=======================-- PL/SQL --> PL/SQL记录--======================= PL/SQL记录有着类似于表的数据结构,是一个或多个字段且拥有数据类型的集合体。定义了PL/SQL记录类型之后,可以定义PL/SQL记录变量。声明一个PL/SQL记录变量相当于定义了多个标量变量,简化了变量的声明,从而大大节省了内存资源。多用于简化单行多列的数据处理。 一、定义PL/SQL记录 1.直接定义PL/SQL记录(首先定义记录类型,类型中包含的记录成员,其次是记录类型变量) TYPE type_name IS RECORD --typ 阅读全文
posted @ 2010-12-18 19:54 ajuanabc 阅读(182) 评论(0) 推荐(0) 编辑
摘要:--============================-- 替代变量与SQL*Plus环境设置--============================1.SQL与PL/SQL代码终止符 SQL代码以";"来表示代码的终止 PL/SQL代码以"."来表示代码的终止,以"/"表示代码的执行 scott@ORCL> select * from emp where empno=7788; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --- 阅读全文
posted @ 2010-12-18 19:40 ajuanabc 阅读(177) 评论(0) 推荐(0) 编辑
摘要:--================================-- PL/SQL --> 异常处理(Exception)--================================ Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引入异常处理部分,进行捕捉异常,并根据异常出现的情况进行相应的处理。一、异常的类型 ORACLE异常分为两种类型:系统异常、自定义异常。 其中系统异常又分为:预定义异常和非预定义异常。 1.预定义异常 ORACLE定义了他们的错误编号和异常名字,常见的预 阅读全文
posted @ 2010-12-16 14:59 ajuanabc 阅读(290) 评论(0) 推荐(0) 编辑
摘要:--==================-- PL/SQL --> 游标--==================一、游标的相关概念及特性 1.定义 映射在结果集中某一行数据的具体位置,类似于C语言中的指针。即通过游标方式定位到结果集中某个特定的行,然后根据业务需求 对该行进行相应特定的操作。 2.游标的分类 显示游标:即用户自定义游标,专门用于处理select语句返回的多行数据 隐式游标:系统自动定义的游标,记录集只有单行数据,用于处理select into 和DML语句 3.游标使用的一般过程: 显示游标:声明, 打开, 读取, 关闭 隐式游标:直接使用读取,声明、打开、关闭都是系统自 阅读全文
posted @ 2010-12-15 21:12 ajuanabc 阅读(166) 评论(0) 推荐(0) 编辑
摘要:--==================-- PL/SQL --> 函数--================== 函数通常用于返回特定的数据。其实质是一个有名字的PL/SQL块,作为一个schema对象存储于数据库,可以被反复执行。函数通常被作为一个表达式来调用或存储过程的一个参数,具有返回值。一、建立函数的语法 CREATE [ OR REPLACE ] FUNCTION function_name (argument1 [mode1] datatype1, argument2 [mode2] datetype2, ...) RETURN datatype IS | AS [local 阅读全文
posted @ 2010-12-11 14:24 ajuanabc 阅读(260) 评论(0) 推荐(0) 编辑
摘要:--=====================-- PL/SQL --> 存储过程--===================== 存储过程子程序的一种类型,能够完成一些任务,作为schema对象存储于数据库。是一个有名字的PL/SQL代码块,支持接收或不接受参数,同时也支持参数输出。一个存储过程通常包含定于部分,执行部分,Exception部分,可以被其他子程序调用,也可以被重用。一、过程定义 CREATE [OR REPLACE]PROCEDURE procedure_name [(argument_name [IN | OUT | IN OUT] argument_type)] AS 阅读全文
posted @ 2010-12-08 16:46 ajuanabc 阅读(185) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示