Oracle数据库概念和PL/SQL语句块格式

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路Oracle数据库概念和PL/SQL语句块格式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!