Oracle 中的基础的一些语法结构

方括号里的内容为可选项

大括号是必填

1PL/SQL结构块

DECLARE
/*
 * 声明部分——定义常量、变量、复杂数据类型、游标、用户自定义异常
 */
BEGIN
/*
 * 执行部分——PL/SQL语句和SQL语句
 */
EXCEPTION
/*
 * 异常处理部分——处理运行异常
 */
END;
/*块结束标记 */

2 创建序列

1 CREATE SEQUENCE [ schema. ] sequence_name
2   [ { INCREMENT BY | START WITH } integer
3   | { MAXVALUE integer | NOMAXVALUE }
4   | { MINVALUE integer | NOMINVALUE }
5   | { CYCLE | NOCYCLE }
6   | { CACHE integer | NOCACHE }
7   | ...
8   ]...
9 ;
  1. schema:模式,即用户名称
  2. sequence_name:序列名称
  3. INCREMENT BY:定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
  4. START WITH:定义序列的初始值,默认为1。
  5. MAXVALUE:序列生成器能产生的最大值。NOMAXVALUE是默认选项,代表没有最大值定义。
  6. MINVALUE:序列生成器能产生的最小值。NOMINVALUE是默认选项,代表没有最小值定义。
  7. CYCLE和NOCYCLE:当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值,最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
  8. CACHE:定义存放序列的内存块的大小,默认为20,相当于预加载。缓冲部分序列计数以便更快获取序列值,可以改善序列的性能,但缓存选项可能会造成数据丢失。NOCACHE表示不缓冲

3 删除序列

1 DROP SEQUENCE [ schema. ] sequence_name ;

4 修改序列

1 ALTER SEQUENCE [ schema. ] sequence_name
2   { INCREMENT BY integer
3   | { MAXVALUE integer | NOMAXVALUE }
4   | { MINVALUE integer | NOMINVALUE }
5   | { CYCLE | NOCYCLE }
6   | { CACHE integer | NOCACHE }
7   | ...
8   } ...
9 ;

注意,不能修改序列的初始值,否则会报ORA-02283。如果需要修改初始值,先删除序列再重新创建序列设定初始值。

复合数据类型

5.1. 记录(Record)

1 TYPE record_name IS RECORD(
2     varable1 data_type1  [NOT NULL]  [:= default_value ],
3     varable2 data_type2  [NOT NULL]  [:= default_value ],
4     ......,
5     varablen data_typen  [NOT NULL]  [:= default_value ]
6 );

5.2. 表(TABLE)

5.2.1. 索引表

1 TYPE table_name IS TABLE OF element_type [NOT NULL]
2 INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARCHAR2];

5.2.2 嵌套表

 1 TYPE type_name IS TABLE OF element_type; 

5.3. 数组(VARRAY) 

 1 TYPE varray_name IS VARRAY(size) OF element_type [NOT NULL]; 

显式游标

6.1声明/定义游标

1 CURSOR cursor_name
2   [(parameter_dec [, parameter_dec ]…)]
3     [RETURN datatype]
4       IS
5         select_statement;

6.2 打开游标

1 OPEN cursor_name [ ( cursor_parameter [ [,] actual_cursor_parameter ]... ) ]

6.3读取数据

1 FETCH { cursor | cursor_variable | :host_cursor_variable }
2   { into_clause | bulk_collect_into_clause [ LIMIT numeric_expression ] } ;

6.4 关闭游标

1 CLOSE cursor_name;

游标FOR循环

1 FOR index_variable IN cursor_name[(value[, value]…)] LOOP
2     -- 游标处理语句
3 END LOOP;

8条件结构

1. 简单IF结构

1 -- 简单IF结构
2 IF <布尔表达式> THEN
3     满足条件时执行的语句
4 END IF;

2. IF-ELSE结构

1 -- IF-ELSE结构
2 IF <布尔表达式> THEN
3     满足条件时执行的语句
4 ELSE
5     不满足条件时执行的语句
6 END IF;

3 多重IF

 1 -- 多重IF
 2 IF <布尔表达式1> THEN
 3     满足条件1时执行的语句
 4 ELSIF <布尔表达式2> THEN
 5     满足条件2时执行的语句
 6 ELSIF <布尔表达式3> THEN
 7     满足条件3时执行的语句
 8 ELSE
 9     满足条件1、2、3均不满足时执行的语句
10 END IF;

注意:ELSIF不能写成ELSEIF

CASE

语法一

 1 CASE 条件表达式
 2     WHEN 条件表达式结果1 THEN
 3         语句1
 4     WHEN 条件表达式结果2 THEN
 5         语句2
 6     ......
 7     WHEN 条件表达式结果n THEN
 8         语句n
 9   [ELSE 条件表达式结果]
10 END CASE;

语法二

 1 CASE
 2   WHEN 条件表达式1 THEN
 3      语句1
 4   WHEN 条件表达式2 THEN
 5      语句2
 6   ......
 7   WHEN 条件表达式n THEN
 8      语句n
 9   [ELSE 语句]
10 END CASE;

10 循环结构

 简单循环

1 LOOP
2     循环体语句;
3     [EXIT WHEN <条件语句>]
4 END LOOP;

WHILE 循环

1 WHILE <布尔表达式> LOOP
2     循环体语句;
3 END LOOP;

FOR循环

1 [<<标签>>]
2 FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
3     循环体语句;
4 END LOOP [<<标签>>];

未完 在更新中。。。

时间: 2024-10-24 04:50:35

Oracle 中的基础的一些语法结构的相关文章

oracle中查看当前用户的表结构、主键、索引

1.查询表的所有列及其属性 select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表 2.查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user

oracle中的基础sql

1.SQL SQL(Structured Query Language) 语言是目前主流的关系型数据库上执行数据操作.数据检索以及数据库维护所需要的标准语言,是用户与数据库之间进行交流的接口,许多关系型数据库管理系统都支持SQL语言,但不同的数据库管理系统之间的SQL语言不能完全通用,Oracle数据库使用的SQL语言是Procedural Language/SQL(简称PL/SQL). 1.1SQL语言分类 通常将SQL语言分为以下4类. (1)数据定义语言(Data Definition L

Oracle中DML基础知识

DML(insert,update,delete) 1.插入数据insert into 表名(列,列...)values(值,值...)//当插入的数据与表格一一对应时,列可以省略insert into 表名 values(值,值...) 例如:--给tbl_user表中添加一条记录insert into tbl_user values (22,'刘强东','123456'); 2.更新数据update 表名 set 列=新值 where 条件: 例如:--修改tbl_user表中第二行记录的用

Shell 编程基础之基本语法结构汇总

一.条件语句 简单条件 if [ condition ]; then # 当 condition 成立时,执行内容: fi # 将 if 反过来写,fi 结束 if 之意 复杂条件 if [ condition ]; then # 当 condition 成立时,执行内容: else # 当 condition 成立时,执行内容: fi if [ condition1 ]; then # 当 condition1 成立时,执行内容: elif [ condition2 ]; then # 当 c

oracle中sql语句的to_date语法

完整日期:TO_DATE('2009-4-28 00:00:00', 'yyyy-mm-dd hh24:mi:ss'); to_date('2008/09/20','yyyy/mm/dd') 创建视图语句 CREATE VIEW ViewPractice5_1 AS select语句 对列进行操作就可以用case---- case when ....Then .. else .... end SQL语句: SELECTsum(case WHEN sale_price<1000 THEN 1 EL

Oracle中没有 if exists(...)

对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare  v_cnt number;begin  select count(*) into v_cnt from T_VIP where col=1;  if v_cnt = 0 then    dbms_output.put_line('无记录');  end if;end;首先这种写法让人感觉很奇怪,明明只

Oracle中没有 if exists(...)的解决方法

http://blog.csdn.net/hollboy/article/details/7550171对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常用的三种,推荐使用最后一种 第一种是最常用的,判断count(*)的值是否为零,如下declare  v_cnt number;begin  select count(*) into v_cnt from T_VIP where col=1;  if v_cnt = 0 then    dbms_o

Oracle中PL/SQL简介、基本语法以及数据类型

Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控制为一体的强大语言,PL/SQL不但支持更多的数据类型,拥有自身的变量申明,赋值语句,而且还有条件,循环等流程控制语句.过程控制结构与SQL数据处理能力无缝的结合形成了强大的编程语言,可以创建过程和函数以及程序包. PL/SQL是一种块结构的语言,它将一组语句放在一个块中,一次性的发送给服务器,由服

Oracle中DDL的基础知识

1.SQL分为5大类: DDL:数据定义语言 DCL:数据控制语言 DML:数据操纵语言 DTL:数据事务语言 DQL:数据查询语言 2.DDL(data definition language):create,drop,alter,rename to 创建表格分为两个步骤: a.定义列和数据类型 b.添加约束 数据类型: 1.数字类型,可以做所有的数学运算 number number(4)代表整数,最大能存9999 number(7,2)代表double类型,整数长度为5,小数位2 2.字符型