PL/SQL(oracle)1_plsql简介
一、PL/SQL目标
二、Pl/SQL简介
?? 是Oracle公司开发的,专门用于Oracle数据库的一种程序开发语言。
?? Pl:代表procedural language,过程性语言。
?? SQL:
?? 增加了循环控制、条件判断等编程语言的特点。
三、块block的介绍
?? 组成:包含4个部分。
?? 1、块的声明部分,以declare关键字开头。写所有的变量、常量声明。是可选的部分。
?? 2、块的主体部分,以begin关键字开头,写块的主要功能。是必须的部分。
?? 3、异常处理部分,以exception关键字开头,处理主体部分可能出现的异常。是可选的部分。
?? 4、结束部分,以关键字end开头,标示一个块的结束。是必须的部分。end;
?? 注意事项:1、所有的声明都写在declare部分。
???????????? 2、每行结束都要加上;除了declare,begin,exception这几个关键字之外。
???????????? 3、一个语句通常写在一行。
四、块的类型
??? 1、匿名块:
??? 2、命名块:
?????????? a\存储过程、函数:被动执行
?????????? b\触发器:自动执行。
五、变量
??? 1、变量命名规则
??? 2、命名建议。
??? 3、变量类型
?????? 标量型:内部没有分量
????????????? a、数值型:number、binary_integer、PLS_integer
????????????? b、字符型:char,varchar2,
????????????? c、日期型:date
????????????? d、布尔型:true,False,Null,
?????? 复合型:内部有分量
????????????? a、记录型变量。
????????????? b、pl/SQL表类型。??????????
?????? 引用型:
?????? LOB型:?
?????? 外部变量:声明在块之外的。
??????????? 绑定变量:绑定变量需要在块的外部声明,使用variable 变量名 变量类型。在块的内如果要使用绑定变量
??????????? ,需要在变量名之前加上:
??????????? 替代变量:不需要声明,直接在块中就可以使用。使用方式在变量名前加上&,该变量需要在程序运行时赋值。?????????????
??? 4、变量声明语法
?????? 变量名 [Constant] 变量数据类型 [Not Null] [:=表达式] [Default 表达式];
?????? 注意:变量名不区分大小写。
?????? 当使用not null或constant时,必须为其赋初值。
??????
?????? %Type:一种简便声明变量的方式。使用语法:
?????? 变量名 前缀%Type? [Not Null] [:=表达式] [Default 表达式];
?????? 前缀可以是某个表中的某个列,或者是另一个先前声明的变量。该声明方式可以随时和数据库中的某个列保持同步。
??? 5、变量赋值:
?????? 语法1:变量名 :=?? 表达式;该语法可以写在declare,begin,exception部分。
?????? 语法2:select 列名|表达式 Into 变量名 From ..........
????????????? *:如果查询结果集是多行或者0行,则该语句抛出异常。
????????????? select后面的列名列表必须和into后面的变量名列表在个数上和数据类型上保持一致。
????????????? 多个变量名之间用,分割。该语法必须写在begin部分。
??? 6、dmbs_output.put_line:输出语句。?
??? 7、set serveroutput On:打开输出标志。
六、注释
?? 1、单行注释:--
?? 2、多行注释: /* 开始,*/结束。
七、过程语句中的函数??
??? 1、有效的:单行字符、单行数值、单行日期、转换、nvl.
??? 2、无效的:所有分组函数、decode
八、嵌套块和变量的作用域。
九、PL/SQL块中的SQL语句。???
??? 只有DML(insert、update、delete、merge)、Select、TCL(commit、rollback、savepoint)
??? 这三种命令可以直接写在pl/sql块中。
??? DDL(Create\Alter\Drop\Rename\truncate)、DCL(Grant\Revoke)不可以直接写。
??? 块和事务没有必然联系。