Oracle数据库概念
Oracle数据库,有以下几个重要的概念:
-
Oracle服务器
由数据库实例和数据库文件组成,即数据库管理系统 DBMS -
Oracle实例
由一些内存区和后台程序组成。
内存结构:数据库高速缓存、重做日志缓存、共享池、流池、可选内存区。
后台程序:
SMON 系统监控进程
PMON 进程监控
CKPT 检查点进程
DBWR 数据库写进程
LGWR 日志写进程
ARCn 归档进程
OTHERS 其他进程注意:要访问数据库,必须先启动实例,启动实例时,先分配内存,然后在启动后台进程,上面红色的5个进程必须启动,否则实例无法创建。
Linux上可以查看进程:ps -ef | grep _ORCL
-
Oracle物理结构
指数据库中一系列操作系统文件,主要有三类:数据文件(Data File);控制文件(Control File);重做日志文件(Redo File)
查询数据文件,可以去dba_data_files
表中查。
PL/SQL语句块
PL/SQL 语句块基本结构:
块头区
IS
声明区
BEGIN
执行区
EXCEPTION
异常区
END
块头区
格式:
Program_type program_name ([parameter_name IN / OUT/ IN OUT type specs, ] ....)
[RETURN datatype]
Program_type: FUNCTION、PROCEDURE、PACKAGE
参数分三类:IN参数,表示将参数传递给程序单元;OUT参数,该参数返回给该程序的调用者;IN OUT为双向参数
specs: 可以包含关键字 NOT NULL
对于FUNCTION,必须返回数值,函数可以在其执行部分的任意位置使用RETURN 关键字;
声明区
格式:
Var_name [CONSTRAINT] datatype [(constraint)] [:= value];
:= 为赋值运算符
例子:
## 声明一个变量
Var_name VARCHAR(20);
## 声明一个带约束的变量
Var_name VARCHAR(20) NOT NULL;
## 声明一个常量且赋初始值
Var_name CONSTANT VARCHAR(20) := 'TEST';
## 声明一个变量且使用DEFAULT关键字为变量赋值
Var_name INTEGER DEFAULT 3.1415926;
执行区
即程序逻辑部分
异常区
格式:
EXCEPTION
WHEN exception_name1
THEN
hand error1;
WHEN exception_name2
THEN
hand error2;
WHEN others
DEFAULT error handling;
例子:
CREATE OR REPLACE FUNCTION p_test(f float)
IS
var_name varchar2(20);
exception1 EXCEPTION;
BEGIN
statement1;
BEGING
statement2;
Raise exception1;
EXCEPTION
WHEN exception1
THEN
hand error1;
END
statement3;
EXCEPTION
WHEN others
error handling;
END
匿名PL/SQL语句块
就是没有块头区,直接从声明区开始
例如:
DECLARE
var_first_name varchar2(20);
var_last_name varchar2(20);
BEGIN
select first_name, last_name
into var_first_name, var_last_name
from employee
where employee_id = 16;
DBMS_OUTPUT.PUT_LINE('var_first_name is : '||var_first_name );
DBMS_OUTPUT.PUT_LINE('var_last_name is : '||var_last_name );
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('no data find');
END;
DBMS_OUTPUT.PUT_LINE将数据库服务器返回的数据显示在SQL*PLUS上面。
也可以使用替代变量增加程序的灵活性,替代变量的符号是:“&”或“&&”,改写上面的例子如下:
DECLARE
var_first_name varchar2(20);
var_last_name varchar2(20);
var_employee_id number :=&b_employee_id
BEGIN
select first_name, last_name
into var_first_name, var_last_name
from employee
where employee_id = var_employee_id;
DBMS_OUTPUT.PUT_LINE('var_first_name is : '||var_first_name );
DBMS_OUTPUT.PUT_LINE('var_last_name is : '||var_last_name );
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('no data find');
END;
运行程序时,会先提示输入替代变量的值。
SQL*PLUS工具
对于PL/SQL程序,分号
表示语句结束,而使用’.’号,表示整个语句块的结束,也可以省略。
按回车键后,语句块不会执行,必须使用“/”符号执行PL/SQL语句块。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155797.html