1.一个完整的pl/sql块的结构
declare
Declarations
begin
Excutable Code
exception
Exceptional handlers
end;
①定义部分
定义部分以关键字declare为标识从declare开始到begin结束。以此主要定义要使用的常量、变量、数据类型、游标、异常处理名称等。PL/SQL所有需要定义的内容,必须在该部分集中定义,而不能像某些高级语言那样可以在程序执行过程中定义。该部分是可选的。
②执行部分
执行部分以begin为标识。以end为结束标识。通过一系列语句和流程控制,实现数据查询、数据操纵、事务控制、游标处理等数据库操作的功能。执行部分是必须的。
③异常处理部分
异常处理部分以关键字exception为标识,以关键字end为结束标识。用于处理执行过程中产生的异常。该部分是可选的。
2.匿名块
匿名块是指动态生成,只能执行一次的块。它没有名字,不能由其他应用程序调用。
①
SQL> set serveroutput on
SQL> begin
2 dbms_output.put_line('This is the first anonymous block.');
3 end;
4 /
This is the first anonymous block.
PL/SQL 过程已成功完成。
②
SQL> declare
2 v_name varchar(20);
3 begin
4 select name into v_name from students where sid=10228;
5 dbms_output.put_line('学生姓名:'||v_name);
6 end;
7 /
学生姓名:林紫寒
PL/SQL 过程已成功完成。
③从控制台读入学生id,然后输入它的姓名
SQL> declare
2 v_name varchar(20);
3 begin
4 select name into v_name from students where sid=&stu_id;
5 dbms_output.put_line('学生姓名:'||v_name);
6 exception
7 when no_data_found then
8 dbms_output.put_line('No data found!');
9 end;
10 /
输入 stu_id 的值: 12343
原值 4: select name into v_name from students where sid=&stu_id;
新值 4: select name into v_name from students where sid=12343;
No data found!
PL/SQL 过程已成功完成。
————————————————————————————————————
SQL> /
输入 stu_id 的值: 10212
原值 4: select name into v_name from students where sid=&stu_id;
新值 4: select name into v_name from students where sid=10212;
学生姓名:欧阳春岚
PL/SQL 过程已成功完成。
3.命名块
PL/SQL命名块是指一次编译可以多次运行的PL/SQL程序,包括自定义函数、过程、包、触发器等。他们编译后放在服务器中,由应用程序或系统在特定的条件下进行调用。
具体实例见后文
4.PL/SQL基本语法
①.只有PL/SQL可以适用的一部分数字:20E3、2.232E-4、7*10**2(结果为700)。
②.如果文字中包含单引号,可以使用([]、()、<>)来分隔。但是这时需要使用q+单引号+[字符串]+单引号.
③
1.
SQL> declare
2 v_student students%rowtype;
3 begin
4 select * into v_student from students where sid=10212;
5 dbms_output.put_line('姓名 性别 出生日期 ');
6 dbms_output.put_line(v_student.name || v_student.sex || v_student.dob);
7 end;
8 /
姓名 性别 出生日期
欧阳春岚女12-3月 -89
PL/SQL 过程已成功完成。
2.
SQL> declare
2 v_id department.did%type;
3 v_name department.dname%type;
4 v_address department.address%type;
5 begin
6 select * into v_id,v_name,v_address from department where did=&id;
7 dbms_output.put_line('系部名称:'||v_name);
8 dbms_output.put_line('系部地址:'||v_address);
9 end;
10 /
输入 id 的值: 102
原值 6: select * into v_id,v_name,v_address from department where did=&id;
新值 6: select * into v_id,v_name,v_address from department where did=102;
系部名称:电气工程
系部地址:2号教学楼
3.
SQL> declare
2 v_id students.sid%type:=0199;
3 v_mid students.mid%type:=NULL;
4 v_name students.name%type:='张三';
5 v_sex students.sex%type:='女';
6 v_dob students.dob%type:='07-5月-2010';
7 v_specialty students.specialty%type:='计算机';
8 begin
9 insert into students values(v_id,v_mid,v_name,v_sex,v_dob,v_specialty);
10 end;
11 /
PL/SQL 过程已成功完成。
4.IF-THEN-ELSEIF-THEN-ELSE-ENDIF
SQL> DECLARE
2 v_id teachers.tid%TYPE;
3 v_title teachers.title%TYPE;
4 BEGIN
5 v_id := &teacher_id;
6 SELECT title INTO v_title
7 FROM Teachers WHERE tid = v_id;
8 IF v_title = '教授' THEN
9 UPDATE Teachers
10 SET wage = 1.1*wage WHERE tid=v_id;
11 ELSIF v_title = '高工' OR v_title= '副教授' THE
12 UPDATE Teachers
13 SET wage = 1.05*wage WHERE tid = v_id;
14 ELSE
15 UPDATE Teachers
16 SET wage = wage+100 WHERE tid = v_id;
17 END IF;
18 END;
19 /
输入 teacher_id 的值: 10103
原值 5: v_id := &teacher_id;
新值 5: v_id := 10103;
PL/SQL 过程已成功完成。
5.CASE-WHEN-THEN-END CASE
SQL> DECLARE
2 v_id Teachers.tid%TYPE;
3 v_title Teachers.title%TYPE;
4 BEGIN
5 v_id := &teacher_id;
6 SELECT title INTO v_title
7 FROM Teachers WHERE tid = v_id;
8 CASE
9 WHEN v_title = '教授' THEN
10 UPDATE Teachers
11 SET wage = 1.1*wage WHERE tid = v_id;
12 WHEN v_title = '高工' OR v_title= '副教授' THEN
13 UPDATE Teachers
14 SET wage = 1.05*wage WHERE tid = v_id;
15 ELSE
16 UPDATE Teachers
17 SET wage = wage+100 WHERE tid = v_id;
18 END CASE;
19 END;
20 /
输入 teacher_id 的值: 10103
原值 5: v_id := &teacher_id;
新值 5: v_id := 10103;
PL/SQL 过程已成功完成。
循环结构:
1.LOOP循环
SQL> declare
2 v_i int:=1;
3 v_sum int:=0;
4 begin
5 loop
6 v_sum:=v_sum+v_i;
7 exit when v_i=10;
8 v_i:=v_i+1;
9 dbms_output.put_line('The sum is:'||v_sum);
10 end loop;
11 end;
12 /
The sum is:1
The sum is:3
The sum is:6
The sum is:10
The sum is:15
The sum is:21
The sum is:28
The sum is:36
The sum is:45
PL/SQL 过程已成功完成。
2.WHILE循环
SQL> declare
2 v_i int:=1;
3 v_sum int:=0;
4 begin
5 while v_i<11 loop
6 v_sum:=v_sum+v_i;
7 v_i:=v_i+1;
8 end loop;
9 dbms_output.put_line('The result is:'||v_sum);
10 end;
11 /
The result is:55
PL/SQL 过程已成功完成。
3.FOR循环
SQL> declare
2 i int:=1;
3 v int:=0;
4 begin
5 for i in 1..10 loop
6 v:=i+v;
7 dbms_output.put_line('The result is:'||v);
8 end loop;
9 end;
10 /
The result is:1
The result is:3
The result is:6
The result is:10
The result is:15
The result is:21
The result is:28
The result is:36
The result is:45
The result is:55
PL/SQL 过程已成功完成。
5.GOTO和NULL语句。实现跳转
SQL> declare
2 i int:=1;
3 v int:=0;
4 begin
5 loop
6 v:=v+i;
7 if i=10 then
8 goto out;
9 end if;
10 i:=i+1;
11 end loop;
12 <<out>>
13 NULL;
14 dbms_output.put_line('The i is:'||i);
15 end ;
16 /
The i is:10
PL/SQL 过程已成功完成。
分享到:
相关推荐
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。
以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...
PL/SQL数据库学习笔记 PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量...
PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行代码。PL/SQL可以处理复杂的数据操作和业务逻辑,支持编程结构如循环、...
Oracle SQL和PL/SQL是数据库管理和编程的重要工具,主要用于...这些笔记提供了学习SQL和Oracle数据库操作的基本框架,对于初学者来说是非常有价值的资源。通过实践和深入学习,可以掌握更复杂的查询技巧和PL/SQL编程。
PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库提供的一种结合了SQL语言和过程式编程的编程环境。它扩展了SQL的功能,使得开发人员能够编写复杂的数据库应用程序,处理事务、实现...
在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其语法结构、变量声明、流程控制以及如何与Oracle数据库中的数据进行交互。 首先,PL/SQL的基本结构分为声明部分、执行部分和异常处理部分...
总的来说,“PL/SQL超级笔记”应该涵盖了从基本语法到高级特性的全面教程,通过学习,新手可以逐步掌握如何使用PL/SQL进行数据库编程,从而更好地管理和操作Oracle数据库。配合"oracle_ppt"中的PPT材料,学习效果会...
### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL)是一种专门为Oracle数据库设计的过程化语言扩展。它是在标准SQL基础上增加了一系列高级编程特性,如变量、控制结构、函数、...
此文档由个人总结快速学习pl/sql的案例及说明,也是快速查询pl、sql开发的精华文档,在此提供给大家学习与查阅
Oracle笔记(PL-SQL)是关于数据库管理和编程的一个重要主题,主要聚焦于Oracle数据库系统中的结构化查询语言(SQL)的扩展——PL/SQL。PL/SQL是一种过程化语言,结合了SQL的功能,使得开发者能够编写复杂的数据库应用...
在Oracle数据库环境中,PL/SQL是一种强大的编程语言,它扩展了SQL的功能,使得数据库操作更加灵活和高效。本文将深入探讨PL/SQL程序设计中的一些关键知识点,包括基本语法、记录类型、流程控制、游标使用、异常处理...
PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL(结构化查询语言)与过程式编程语言相结合,为数据库管理提供了强大的编程能力。以下是对PL/SQL的一些核心知识点...
### PL/SQL 存储过程知识点详解 #### 1. PL/SQL 存储过程概述 PL/SQL(Procedure Language for SQL)是...通过这些基本概念的学习,可以帮助开发者更好地掌握 PL/SQL 的使用技巧,提高数据库应用程序的效率和性能。
在PL/SQL的学习中,分区是数据库管理大型数据集的一种高效方法,特别是在处理大数据量时。本篇笔记主要探讨了何时应该使用分区以及Oracle支持的分区类型。 首先,当面对超过2GB的大数据表时,分区是十分必要的。这...