日期:2014-05-16  浏览次数:20573 次

oracle学习笔记(一)
一,变量
PL/SQL块的组成分为三个部分
  --定义(declare)
  --可执行部分(begin.......end)
  --异常部分(exception)
具体的结构如下:
Declare
变量,常量,游标,异常
Begin
Sql语句,pl/sql语句
Exception
End;

例如:
    DECLARE
      v_variable  VARCHAR2(5);
BEGIN
     SELECT	column_name
     INTO	v_variable
     FROM	table_name;
EXCEPTION
     WHEN exception_name THEN
     ...
END;
/

其中v_variable 是一个变量,在执行部分,将查询的结果放入该变量中保存。如果发生了异常测执行异常部分。

(一)变量的定义
      1.变量的定义格式:
      Declare(可选)
        变量名 变量类型;
     如:
      Declare
         V_name varchar2(25)  := not null“admin”;
     意义:定义一个变量v_name,规定值不能为空,初始值是“admin”
     几种常见的数据类型:
        Varchar2,number,date,char,long,boolean等
     %type属性:
         用于类型匹配:两种情况使用。
(1) 以前定义变量A的类型,要定义变量B的类型与A相同时,则可以:
            B A%type
(2)   定义变量类型和表中列的类型相同时:
          A 表名.列名%type
     2.记录类型:
         (1) 格式: type 记录变量名 is record(
变量名  变量类型,
……
变量名 变量类型)
(2) 记录类型与表的结构一致时:
记录变量名 表名%rowtype
          例如:定义一个person类型的记录变量(姓名,性别,年龄),表person。则:
(1)
Declare
Type t_person is record(
Name varchar2(20),
Sex varchar2(2),
Age number(4),
)

(2) t_person person%rowtype;
        3 绑定变量 指的是全局变量
          声明一个绑定变量:variable name varchar2(20);
          引用绑定变量:    :name := “admin”;
        4 变量的命名规范:
标识符 举例:
Variable	v_name
Constant	C_name
Cursor	name_curse
Exception	e_name
Record	name_record
SQL*Plus substitution parameter	p_name
SQL*Plus global variable	g_name
 

二 可执行部分
   例如:
(1)
set serveroutput on;
declare
  v_name varchar(2) not null :=’’;
begin
  select username into v_name from userinfo where usernumber=95001;
  dbms_output_print_line(v_name);
end;
/;

注释:将学号是95001的学生的姓名通过PL/SQL打印出来。
      V_name是一个变量,用来存放95001的姓名。
      dbms_output_print_line(v_name);是库中提供的一个打印函数,在使用之前必须把包包括进来。
(2) 对于记录类型的变量信息的打印
(3) /*如下是一个关于记录类型数据的操作的例子*/
Set serveroutput on;
Declare
  Record_person person%rowtype;
Begin
  Select *  into record_person from person where usernumber=95001;
--以下是打印语句
  Dbms_output_print_line(record_person.name);
  Dbms_output_print_line(record_person.sex);
  Dbms_output_print_line(record_person.age);
End;
/

         注释:(1)/*…..*/ 是多行注释语句。
               (2)—是单行注释语句
    (3)Record_person person%rowtype;是记录类型变量的定义
               (4)record_person.age 是记录变量数据的引用