您的位置:首页 > 数据库 > Oracle

Oracle pl/sql 基础入门语法

2018-01-29 14:55 585 查看
PL/SQL是一种块结构的语言,这意味着PL/SQL程序被划分和编写代码的逻辑块。每块由三个子部分组成:
1 声明
此部分开头使用关键字DECLARE。它是一个可选的部分,并限定在该程序中使用的所有变量,游标,子程序,和其他元素。
2 可执行命令
此部分是封闭关键字BEGIN和END,这是一个强制性的部分。它由程序的可执行文件的PL/SQL语句。它应具有至少一个可执行的代码行,这可能仅仅是一个空命令,以指示什么都不执行。
3 异常处理
此部分开头使用关键字EXCEPTION。此部分又是可选的,含有异常,在程序处理错误中。

这里是一个PL/SQL块的基本结构:
DECLARE
<declarations section>
BEGIN
<executable command(s)>
EXCEPTION
<exception handling>
END;

一、声明
声明一个变量的语法是:
[VARIABLE] variable_name [CONSTANT] datatype [NOT NULL] [:= | DEFAULT initial_value]

变量声明
<变量名> 类型[:=初始值];

常量声明
<变量名> CONSTANT 类型:=初始值; --示例: pi CONSTANT number(5,3):=3.14;

全局变量声明
VARIABLE <变量名> 类型; --示例: VARIABLE num number;

初始化变量
counter binary_integer := 0;
greetings varchar2(20) DEFAULT 'Have a Good Day';

变量的作用域
有两种类型的变量范围:
局部变量 - 在[内部块中]声明,并不能访问外块中的变量。
全局变量 - 在[最外层块]或包中声明的变量。

二、数据类型
基本数据类型和特殊数据类型
基本数据类型:number(p,s);varchar2(size);char(size);long;nvarchar2(size);nchar(size);date;boolean;real(与number等价);rowid(存放数据库的行号);
特殊数据类型:%type类型;record类型;%rowtype类型

1、%type类型:声明一个与指定列相同的数据类型。
如:var_ename emp.ename%type;
声明的var_ename的数据类型与emp表中的ename列数据类型相同。

set serveroutput on                --设置系统输出的状态.
declare var_firstname EMPLOYEES.first_name%type;
var_job EMPLOYEES.job_id%type;
begin
  select first_name,job_id into var_firstname,var_job from EMPLOYEES where employee_id=100;
  SYS.dbms_output.put_line(var_firstname||'的工作是'||var_job);
end;


2、record类型:也成为‘记录类型’,要先定义一个记录类型,再使用记录类型声明一个记录类型的变量。 如:

set serveroutput on
declare
type emp_type is record          /*先定义一个记录类型,emp_record为定义的记录类型名*/
(
var_a1 EMPLOYEES.first_name%type,
var_a2 EMPLOYEES.job_id%type,
var_a3 EMPLOYEES.salary%type
);
empinfo emp_type;              /*再声明一个记录类型的变量*/
begin
  select first_name,job_id,salary
  into empinfo               /*后使用声明的记录类型变量*/
  from EMPLOYEES
  where employee_id=100;
  dbms_output.put_line(empinfo.var_a1||'的工作是'||empinfo.var_a2||',并且工资是'||empinfo.var_a3);
end;


3、%rowtype类型:用来存储数据表中检索到的一行数据。

set serveroutput on
declare
var_row EMPLOYEES%rowtype;    /*emp_row表示变量名;emp为指定的表名,表示用来存储哪个表中的一行数据*/
begin
  select * into var_row from EMPLOYEES where employee_id=100;
  dbms_output.put_line(var_row.first_name||'的工作是'||var_row.job_id||',并且工资是'||var_row.salary);
end;


三、语句语法

1、条件控制语句
IF <条件1> THEN
语句
[ELSIF <条件2> THEN
语句
....
ELSIF <条件n> THEN
语句]
[ELSE
语句]
END IF;

2、循环控制语句
1.LOOP
LOOP
语句;
EXIT WHEN <条件>
END LOOP;

2.WHILE LOOP
WHILE <条件>
LOOP
语句;
END LOOP;

3.FOR
FOR <循环变量> IN 下限..上限
LOOP
语句;
END LOOP;

三、NULL 语句
null;
表示没有操作;

四、
异常处理
EXCEPTION
WHEN <异常类型> THEN
语句;
WHEN OTHERS THEN
语句;
END;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: