PL/SQL学习(一)

时间:2023-03-08 15:43:45
PL/SQL学习(一)

原文参考:http://plsql-tutorial.com/

组成:

  • 声明部分(可选)
  • 执行部分(必选)
  • 异常处理(可选)
    明:
        DECLARE
    执行:
        BEGIN
            ...
        END
    异常处理:
        EXCEPTION
每个语句必须以“;”结束;
PL/SQL Block可嵌套;
/表示执行PL/SQL块;

优点:
  块结构
         可嵌套,任务或者逻辑模块的集合,可存储在数据库里重用
  支持过程化语言
          包含如条件判断语句和循环等过程化语句结构
  高性能
          多条SQL语句一起执行,减少了网络通信
  异常处理
          异常发生时,可以指定执行特定操作或者返回异常信息
 

PL/SQL变量和常量

变量

格式:

variable_name datatype [NOT NULL := value ]; 
例子:
dept varchar2(10) NOT NULL := “HR Dept”;
 
指定变量值的两种方式:

1)   variable_name:= value;

2)

SELECT column_name

INTO variable_name

FROM table_name

[WHERE condition];

 
变量范围:
  • Local variables -定义在嵌套块里,不能被外部块访问
  • Global variables - 定义在外部块里,可以供自己使用,也可以被其里面的嵌套块使用。

常量

格式:

constant_name CONSTANT datatype := VALUE; 
例子:
salary_increase CONSTANT number (3) := 10;

pl/Sql Record 记录

定义和声明pl/Sql Record的几种方式:

语法格式

用途

TYPE record_type_name IS RECORD (column_name1 datatype, column_name2 datatype, ...);

Define a composite datatype, where each field is scalar.

col_name table_name.column_name%type;

Dynamically define the datatype of a column based on a database column.

record_name record_type_name;

Declare a record based on a user-defined type.

record_name table_name%ROWTYPE;

Dynamically declare a record based on an entire row of a table. Each column in the table corresponds to a field in the record.
 
Record设置和获取记录:
语法格式

用途

record_name.col_name := value;

To directly assign a value to a specific column of a record.

record_name.column_name := value;

To directly assign a value to a specific column of a record, if the record is declared using %ROWTYPE.

SELECT col1, col2 INTO record_name.col_name1, record_name.col_name2 FROM table_name [WHERE clause];

To assign values to each field of a record from the database table.

SELECT * INTO record_name FROM table_name [WHERE clause];

To assign a value to all fields in the record from a database table.

variable_name := record_name.col_name;

To get a value from a record column and assigning it to a variable.