玩转PL/SQL编程/小白专属

本文介绍了PL/SQL的基础知识,包括其在Oracle数据库中的应用,如过程、函数和触发器的编写方法。通过实例展示了如何使用SQL*Plus创建存储过程,并进行调用,还讨论了PL/SQL的优势和局限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PL/SQL编程

  • pl/sql是什么
    pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展,
    pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句
    和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大
  • oracle数据库中pl/sql编写(过程,函数,触发器)它们是存在数据库的数据对象
  • ************1.过程,函数,触发器是pl/sql编写的 ************
    ************2.过程,函数,触发器是在Oracle中 ************
    ************3.pl/sql是非常强大的数据库过程语言 ************
    ************4.过程,函数可以在Java程序中调用 ************


我们可以编程一些复杂的查询,用编程方式来实现,这样查询语句就简单化了

  1. 优势:
    简化复杂度了,减少网络的传输,增加程序的模块化
    提高运行性能运行速度更快,提高安全性
    不好:
    移植性不好
  2. 用什么编写pl/sql
    sqlplus是oracle公司提供的一个工具
    pl/sql developer 是用于开发pl/sql块的继承开发

sqlplus演示:

编写一个存储过程,该过程可以向某表中添加记录
1.创建一个简单的表

create table mytest(name varchar2(30),passwd varchar2(30));

2.创建过程

create [or replace]  procedure sp_pro1 is
begin--执行部分
insert into mytest('张三','a123');--故意错误
end;
回车以后再加"/" 执行
"[ ]" 可选写与不写,
replace: 表示如果有 sp_pro1表就替换

警告:创建的过程带有编译错误

如何查看错误 show error;
缺少 SELECT 关键字 values

create or replace  procedure sp_pro1 is
begin--执行部分
insert into mytest values('张三','a123');
end;
/

过程已创建

如何调用该过程

① exec 过程名(参数值1,参数值2...);--有参数请带参数
② call 过程名(参数值1,参数值2...);--有参数请带参数

调用过程;
exec sp_pro1;


查一下,select * from mytest;

NAME   PASSWD
----------------------- -------------------------------
张三   a123

再调用过程;
exec sp_pro1;

再查一下,select * from mytest;

NAME   PASSWD
----------------------- -------------------------------
张三   a123
张三   a123

有了两条,这是一个最简单的存储过程
-------------------------------------------------------
sql developer演示:

sql developer 这个工具开发是最好的


打开sql developer
点左上角文件--》新建--》命定窗口
在编辑器先写后粘贴在对话框执行
编辑器是文本可以联想关键字,对话框用来执行的
--案列
create or replace procedure sp_pro2 is
begin
--执行部分
delete from mytest where name='张三';
end;

调用一下:exec sp_pro2;
查一下:select * from mytest;
现在删除后是一个空表了,以上做了两个案列
就是为了让看这个文章的人知道怎么去用
第一写,细节都写上了,但是有点啰嗦
先成简单到细节再加强

pl/sql基础介绍:

开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句
的编写方法,还要掌握pl/sql语句及语法规则。pl/sql编程
可以使用变量和逻辑控制语句,从而可以编写非常有用的功能
模块。
比如:分页存储过程模块,订单处理存储过程模块,转账存储
过程模块..而且如果使用pl/sql编程,我们可以轻松的完成非常
复杂的查询要求

■简单分类
                         |-----过程(存储过程)
                         |
                         |-----函数
                         |
块(编程)----- |
                           |-----触发器
                           |
                           |-----包
主要是编写这四个,还可以编写其他的,是的可以,但是不是pl/sql重点

■编写规范
  ①注释
  单行注释  --
  多行注释  /*....*/来划分
  ②标识符号的命名规范
  1)当定义变量时,建议用v_作为前缀 v_sal
  2)当定义常量时,建议用c_作为前缀 c_rate
  3)当定义游标是,建议用_cursor 作为后缀emp_sursor;
  4)当定义列外时,建议用e_作为前缀 e_error

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

■块结构示意图
  pl/sql块由三个部分构成:定义部分,执行部分,例外处理部分。
  如下所示:
  declear
  /*定义部分-----定义常量、变量、游标、例外、复杂数据类型*/
  begin
  /*执行部分-----要执行的pl/sql语句和sql语句*/
  exception
  /*例外处理部分-----处理运行的各种错误*/
  end;

  特别说明:
  定义部分是从declare开始的,该部分是可选的
  执行部分是从begin开始的,该部分是必须的
  例外处理部分是从exception开始的该部分可选的

·定义跟Java程序很像的


--最简单的块
begin
dbms_output.put_line('hello,world');
end;
set serveroutput on;打开输出选项


--有定义和执行部分的块
--把用户的编号也显示
declare
--定义变量
v_ename varchar2(5);
v_sal number(7,2);
begin
--执行部分
select ename,sal into v_ename,v_sal from emp where empno=&aa;
--在控制台显示用户名
dbms_output.put_line('用户名是:'||v_ename||'工资是:'||v_sal);
--异常处理
exception
when no_date_found then
dbms_output.put_lint('朋友,你的编号输入有误')
end;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值