技术开发 频道

Oracle入门学习PL/SQL基础

  【IT168 技术文档】

  PL/SQL简介:

  概念:

  优点:性能,可移植

  块特性:

  DECLARE

  声明变量、常量的程序块

  声明部分不能是oracle的保留字,help reserved words

  BEGIN

  执行语句部分的程序块,至少有一句执行语句。比如null;

  EXCEPTION

  异常处理部分的程序块,如果声明和执行部分出现错误,oracle停止这些块的处理,跳转到异常块,是一种回退机制

  END;

  /

  / 是sqlplus中的块终止符,用户输入/ 并回车后,oracle 将刚才输入的代码块传递给数据库的PL/SQL引擎。

  set serveroutput on

  declare

  l_text varchar2(200);

  begin

  l_text :=”hello, world”;

  dbms_output.put_line(l_text);

  exception

  when others then

  dbms_output.put_line(“We encountered an exception!”);

  raise;

  end;

  /

  set serveroutput on

  declare

  l_number number :=1;

  begin

  l_number++;

  dbms_output.put_line(‘1+1=’|| to_char(l_number)||’!’);

  exception

  when others then

  dbms_output.put_line(‘We encountered an exception!’);

  end;

  /

  块嵌套:

  程序块可以在可执行部分和异常处理部分包含另外的程序块

  set serveroutput on

  declare -- begin block 1

  l_text varchar2(100);

  begin

  l_text := ‘Block1’;

  dbms_output.put_line(l_text);

  declare --begin block 2

  l_more_text varchar2(100);

  begin

  l_more_text := ‘Block2’;

  dbms_output.put_line(l_more_text);

  end; -- end block 2

  end; -- end block 1

  /

  声明部分:

  变量和常量都必须在声明( declare )部分定义,必须规定名称和数据类型。

  Declare

  L_number number;

  Begin

  L_number :=100;

  End;

  /

  也可以在声明部分为变量赋值,即初始化变量。

  Declare

  L_number number := 100;

  Begin

  Null;

  End;

  /

  常量:

  1、 不能改变

  2、 必须在声明的时候初始化常量

  3、 必须在数据类型的左边规定constant

  declare

  l_number constant number := 10;

  begin

  null;

  end;

  /

  如果没有初始化:

  declare

  l_number constant number;

  begin

  null;

  end;

  /

  报错,不同于在异常块中定义的异常,这是一种编译期间的错误,异常块捕捉不到。

  如果执行过程中改变常量:

  declare

  l_number constant number := 10;

  begin

  l_number := 20;

  end;

  /

  报错。

  为常量变量赋值:

  :=

  声明部分可以指定默认值:

  variable datatype default expression;

  declare

  l_weeks_in_month number default 4;

  begin

  l_weeks_in_month := 5;

  end;

  /

  使用not null 操作符:

  declare

  l_number number not null := 1;

  l_number2 number;

  begin

  l_number:=10;

  l_number:=l_number2;

  end;

  /

0
相关文章