[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)
时间:2022-03-14 03:35
原文:
[顶]ORACLE PL/SQL编程详解之二:
PL/SQL块结构和组成元素(为山九仞,岂一日之功)
标识符 命名规则 例子 程序变量 V_name V_name 程序常量 C_Name C_company_name 游标变量 Cursor_Name Cursor_Emp 异常标识 E_name E_too_many 表类型 Name_table_type Emp_record_type 表 Name_table Emp 记录类型 Name_record Emp_record SQL*Plus 替代变量 P_name P_sal 绑定变量 G_name G_year_sal 在ORACLE8i中可以使用的变量类型有: 类型 子类 说 明 范 围 ORACLE限制 CHAR Character String Rowid Nchar 定长字符串 民族语言字符集 0à32767 可选,确省=1 2000 VARCHAR2 Varchar, String NVARCHAR2 可变字符串 民族语言字符集 0à32767 4000 4000 BINARY_INTEGER 带符号整数,为整数计算优化性能 NUMBER(p,s) Dec Double precision Integer Int Numeric Real Small int 小数, NUMBER 的子类型 高精度实数 整数, NUMBER 的子类型 整数, NUMBER 的子类型 与NUMBER等价 与NUMBER等价 整数, 比 integer 小 LONG 变长字符串 0->2147483647 32,767字节 DATE 日期型 公元前4712年1月1日至公元后4712年12月31日 BOOLEAN 布尔型 TRUE, FALSE,NULL 不使用 ROWID 存放数据库行号 UROWID 通用行标识符,字符类型 2.4.2 复合类型 ORACLE 在 PL/SQL 中除了提供象前面介绍的各种类型外,还提供一种称为复合类型的类型---记录和表. 记录类型类似于C语言中的结构数据类型,它把逻辑相关的、分离的、基本数据类型的变量组成一个整体存储起来,它必须包括至少一个标量型或RECORD 数据类型的成员,称作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但逻辑相关的信息。在使用记录数据类型变量时,需要先在声明部分先定义记录的组成、记录的变量,然后在执行部分引用该记录变量本身或其中的成员。 2.4.2.2 数组类型 数据是具有相同数据类型的一组成员的集合。每个成员都有一个唯一的下标,它取决于成员在数组中的位置。在PL/SQL中,数组数据类型是VARRAY。 定义VARRY数据类型语法如下:
TYPE varray_name IS VARRAY(size) OF element_type [NOT NULL];
varray_name是VARRAY数据类型的名称,size是下整数,表示可容纳的成员的最大数量,每个成员的数据类型是element_type。默认成员可以取空值,否则需要使用NOT NULL加以限制。对于VARRAY数据类型来说,必须经过三个步骤,分别是:定义、声明、初始化。 2.4.2.3 使用%TYPE 定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致,这时可以使用%TYPE。 使用%TYPE特性的优点在于: l 所引用的数据库列的数据类型可以不必知道; l 所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。 2.4.3 使用%ROWTYPE PL/SQL 提供%ROWTYPE操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。 使用%ROWTYPE特性的优点在于: l 所引用的数据库中列的个数和数据类型可以不必知道; l 所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。 2.4.4 LOB类型 ORACLE提供了LOB (Large OBject)类型,用于存储大的数据对象的类型。ORACLE目前主要支持BFILE, BLOB, CLOB 及 NCLOB 类型。 2.4.5 BIND 变量 绑定变量是在主机环境中定义的变量。在PL/SQL 程序中可以使用绑定变量作为他们将要使用的其它变量。为了在PL/SQL 环境中声明绑定变量,使用命令VARIABLE。例如:
VARIABLE return_code NUMBER 可以通过SQL*Plus命令中的PRINT 显示绑定变量的值。例如: 2.4.6 PL/SQL 表(TABLE) 定义记录表(或索引表)数据类型。它与记录类型相似,但它是对记录类型的扩展。它可以处理多行记录,类似于高级中的二维数组,使得可以在PL/SQL中模仿数据库中的表。
方法 描述 EXISTS(n) 如果集合的第n个成员存在,则返回true COUNT 返回已经分配了存储空间即赋值了的成员数量 FIRST LAST FIRST:返回成员的最低下标值 LAST: 返回成员的最高下标值 PRIOR(n) 返回下标为n的成员的前一个成员的下标。如果没有则返回NULL NEXT(N) 返回下标为n的成员的后一个成员的下标。如果没有则返回NULL TRIM TRIM:删除末尾一个成员 TRIM(n) :删除末尾n个成员 DELETE DELETE:删除所有成员 DELETE(n) :删除第n个成员 DELETE(m, n) :删除从n到m的成员 EXTEND EXTEND:添加一个null成员 EXTEND(n):添加n个null成员 EXTEND(n,i):添加n个成员,其值与第i个成员相同 LIMIT 返回在varray类型变量中出现的最高下标值 2.5.1 关系运算符 运算符 意义 = 等于 <> , != , ~= , ^= 不等于 < 小于 > 大于 <= 小于或等于 >= 大于或等于 运算符 意义 + 加号 - 减号 * 乘号 / 除号 := 赋值号 => 关系号 .. 范围运算符 || 字符连接符 运算符 意义 IS NULL 是空值 BETWEEN AND 介于两者之间 IN 在一列值中间 AND 逻辑与 OR 逻辑或 NOT 取返,如IS NOT NULL, NOT IN 2.6.2 BOOLEAN 赋值 布尔值只有TRUE, FALSE及 NULL 三个值。如:
DECLARE 数据库赋值是通过 SELECT语句来完成的,每次执行 SELECT语句就赋值一次,一般要求被赋值的变量与SELECT中的列名要一一对应。如: 2.6.4 可转换的类型赋值 2011-5-9 */ 2.9.1 简单数据插入例子 2.9.2 简单数据删除例子 例17:
/***********************************************/ © 2011 原创作品,转贴请注明作者和出处,留此信息。 ------------------------------------------------ cnBlobs:CSDN: 作者:EricHu(DB、C\S、B\S、WebService、WCF、PM等) Q Q:80368704 E-Mail: 80368704@qq.com
2.4.1 变量类型
VARIABLE return_msg VARCHAR2(20)
2.6.1 字符及数字运算特点
bDone BOOLEAN;
BEGIN
bDone := FALSE;
WHILE NOT bDone LOOP
Null;
END LOOP;
END;
/* 文件名: test_deletedata.sql */
/* 说 明:
简单的删除例子,不是实际应用。 */
/* 作 者: EricHu */
/* 时 间: 2011-5-9 */
/***********************************************/
DECLARE
v_ename VARCHAR2(20) := ‘Bill‘;
v_sal NUMBER(7,2) :=1234.56;
v_deptno NUMBER(2) := 10;
v_empno NUMBER(4) := 8888;
BEGIN
INSERT INTO emp ( empno, ename, JOB, sal, deptno , hiredate )
VALUES ( v_empno, v_ename, ‘Manager’, v_sal, v_deptno,
TO_DATE(’1954.06.09’,’yyyy.mm.dd’) );
COMMIT;
END;
DECLARE
v_empno number(4) := 8888;
BEGIN
DELETE FROM emp WHERE empno=v_empno;
COMMIT;
END;
出处:
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
更多文章请看