oracle12 pl/sql

pl/sql块介绍
 介绍
  块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块,要完成相对简单的应用功能,可能只需要编写一个pl/sql块,但是如果想要实现复杂的功能,可能需要在一个pl/sql块中嵌套其它的pl/sql块。 

 块结构示意图
pl/sql块由三个部分构成:定义部分,执行部分,例外处理部分。
如下所示:
declare
/*定义部分——定义常量、变量、游标、例外、复杂数据类型*/
begin
/*执行部分——要执行的pl/sql语句和sql语句*/
exception
/*例外处理部分——处理运行的各种错误*/
end;
定义部分是从declare开始的,该部分是可选的;
执行部分是从begin开始的,该部分是必须的;
例外处理部分是从exception开始的,该部分是可选的。
可以和java编程结构做一个简单的比较。 
pl/sql块的实例(1)
 实例1-只包括执行部分的pl/sql块
Sql代码
1.set serveroutput on --打开输出选项   
2.begin    
3.    dbms_output.put_line(‘hello‘);   
4.end;  

相关说明:
dbms_output是oracle所提供的包(类似java的开发包,put_line是函数),该包包含一些过程,put_line就是dbms_output包的一个过程(包下面就是函数或者过程了)。 

pl/sql块的实例(2)
 实例2-包含定义部分和执行部分的pl/sql块
Sql代码
1.declare  
2.    v_ename varchar2(5); --定义字符串变量   
3.begin  
4.    select ename into v_ename from emp where empno=&aa;   
5.    dbms_output.put_line(‘雇员名:‘||v_ename);   
6.end;   
7./  
  如果要把薪水也显示出来,那么执行部分就应该这么写:
Sql代码
declare  
v_ename varchar2(5);
v_sal number(7,2)
select ename,sal into v_ename,v_sal from emp where empno=&aa;

相关说明:
& 表示要接收从控制台输入的变量。看图: 
pl/sql块的实例(3)
 实例3-包含定义部分,执行部分和例外处理部分
  为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理,这个很有必要。
1.比如在实例2中,如果输入了不存在的雇员号,应当做例外处理。
2.有时出现异常,希望用另外的逻辑处理,[网示]
我们看看如何完成1的要求。
相关说明:
oracle事先预定义了一些例外,no_data_found就是找不到数据的例外。
Sql代码
1.declare  
2.    --定义变量   
3.    v_ename varchar2(5);   
4.    v_sal  number(7,2);   
5.begin  
6.    --执行部分   
7.    select ename,sal into v_ename,v_sal from emp where empno=&aa;   
8.    --在控制台显示用户名   
9.dbms_output.put_line(‘用户名是:‘||v_ename||‘ 工资:‘||v_sal);   
10.    --异常处理   
11.exception   
12.when no_data_found then  
13.    dbms_output.put_line(‘朋友,你的编号输入有误!‘);   
14.end;   
15./  
十七:pl/sql分类 -- 过程,函数,包,触发器
过程
过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out), 通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境(java程序)。在sqlplus中可以使用create procedure命令来建立过程。
实例如下:
1.请考虑编写一个过程,可以输入雇员名,新工资,可修改雇员的工资
2.如何调用过程有两种方法; exec  call
3.如何在java程序中调用一个存储过程
问题:如何使用过程返回值?
特别说明:
对于过程我们会在以后给大家详细具体的介绍,现在请大家先有一个概念。 

1.编写一个过程:
create procedure sp_pro3(spName varchar2, newSal number) is
--不要写成number(3,2),表明类型就可以了,不需要大小。就好像Java写方法时的参数一样
Sql代码
1.begin  
2.  --执行部分,根据用户名去修改工资   
3.update emp set sal=newSal where ename=spName;   
4.end;   
5./  

2.调用过程:exec sp_pro3(‘scoot’4678);
3.java程序中调用一个存储过程
//演示java程序去调用oracle的存储过程案例
Java代码
1.import java.sql.*;   
2.public class TestOraclePro{   
3.    public static void main(String[] args){   5.        try{   
6.            //1.加载驱动   
7.            Class.forName("oracle.jdbc.driver.OracleDriver");   
8.            //2.得到连接   
9.            Connection ct = DriverManager.getConnection("jdbc:oracle:[email protected]:1521:MYORA1","scott","m123");   11.            //3.创建CallableStatement   
12.            CallableStatement cs = ct.prepareCall("{call sp_pro3(?,?)}");   
13.            //4.给?赋值   
14.            cs.setString(1,"SMITH");   
15.            cs.setInt(2,10);   
16.            //5.执行   
17.            cs.execute();   
18.            //关闭   
19.            cs.close();   
20.            ct.close();   
21.        } catch(Exception e){   
22.            e.printStackTrace();   
23.        }   
24.    }   
} 
时间: 2024-10-14 04:51:16

oracle12 pl/sql的相关文章

PL/SQL developer 连接oracle数据库报错“initialization error could not load oci.dll”

声明:PL/SQL 版本:PL/SQL Developer 9.0.6 (http://files.allroundautomations.com/plsqldev906.exe) 报错提示如图: 原因:PL/SQL只对32位OS进行支持,解决方法是额外加载一个oci.dll文件 解决办法:1.下载OCI.DLL相关库文件.地址: (需注册Oracle账号) http://www.oracle.com/technetwork/topics/winsoft-085727.html ----->  

使用PL/SQL连接oracle数据库,并将数据进行导出备份和导入恢复

这种操作百度一搜一大片,今天整理以前做的项目时自己备份了一下数据库,试着将数据进行导出备份和导入恢复了一下:下面是操作过程: 1 开启服务 2 配置监听 找到下面文件: 记事本打开 在导航器的下拉菜单中选择:将数据库添加到树, 然后点击确定 然后使用PL/SQL就可以登录了: 3 建立新表空间和新用户 使用system用户登录:执行如下sql语句建立表空间和新用户,以及给用户授权 建立表空间 Create tablespace myyyjc datafile 'D:\app\Administra

解决pl\sql乱码问题

查看数据库服务器的字符集 select * from nls_database_parameters where parameter='NLS_CHARACTERSET'; PARAMETER                     VALUE NLS_CHARACTERSET              ZHS16GBK select sys_context('USERENV', 'LANGUAGE'); 客户端字符集 select * from nls_instance_parameters

PL/SQL Developer使用技巧、快捷键

1.类SQL PLUS窗口:File->New->Command Window,这个类似于oracle的客户端工具sql plus,但比它好用多了. 2.设置关键字自动大写:Tools->Preferences->Editor,将Keyword case选择Uppercase.这样在窗口中输入sql语句时,关键字会自动大写,而其它都是小写.这样阅读代码比较容易,且保持良好得编码风格,同理,在Tools->Preferences->Code Assistant(助手)里可

PL/SQL在win7/win8 x64位下使用客户端连接oracle

新做了win8 x64位的系统.需要使用plsql连接oracle数据库.之前的机器装有64位的oracle11g,plsql可以直接找到oracle_home连接到数据库. 这次不想在本地安装数据库,因此只装了一个32位的数据库客户端.配置环境变量时遇到一些小问题,在此记录下来. 1.下载oracle客户端,然后解压到任意目录下 2.安装好plsql,然后配置plsql的oracle_home和oci库的地址 plsql的preference设置 ORACLE_HOME:F:\oracle\p

Oracle之PL/SQL编程_流程控制语句

选择语句 1. if...then 语句 语法: if < condition_expression > then plsql_sentence end if; condition_expression:表示一个条件表达式,其值为 true 时,程序会执行 if 下面的 PL/SQL 语句: 如果其值为 false,则程序会跳过if 下面的语句而 直接执行 end if 后边的语句. plsql_sentence:condition_expression 为 true 时,要执行的语句. 2.

PL/SQL 编程(二)游标、存储过程、函数

游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段. 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录. 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标. 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行.打开游标后,用户可以利用游

(十六)PL/SQL日期及时间

PL/SQL提供两个日期和时间相关的数据类型: 1.日期时间(Datetime)数据类型 DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE 2.间隔数据类型 INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND   一.日期时间字段值和间隔数据类型这两个日期时间和间隔数据类型包括字段.这些字段的值确定的数据类型的值.下表列出了时间和间隔的字段及其可能的值. 字段名称

(十)PL/SQL记录

PL/SQL记录就是可以容纳不同类型的数据项的数据结构.记录由不同字段,类似于数据库表的行.例如,要保留跟踪图书馆中的书籍.可能要跟踪有关每本书下面的属性类似:标题,作者,主题,图书ID.包含一个字段为每个这些项目记录允许进行处理书籍作为一个逻辑单元信息. PL/SQL可以处理记录的以下几种类型:   基于表的记录   基于游标的记录   用户自定义记录      附:  Select * from customers;+----+----------+-----+-----------+---