我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pl/sql编程基础

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

pl/sql编程基础

PL/SQL

1、过程、函数、触发器是pl/sql编写的

2、过程、函数、触发器是存放在oracle数据库中的

3、pl/sql是非常强大的过程化语言

4、过程、函数、触发器可以在java程序中调用


pl/sql编写能节省一点时间就是提高了性能(量大),java直接调用数据库存放的过程,解析时间就节省下来了,提高了性能


模块化的设计思想-----》存储过程


网络传输(java程序中编写的sql语言),直接调用数据库的过程节省了传输量


提高安全性(存储过程避免了数据库信息的泄漏)

缺点:

移植性不好


pl/sql编程基本单位是块,通过块可以编写出过程、函数、触发器、包

下面进行一个最基本的编程

案例:向某表中插入一条数据

create or repalce procedure 名称 is :replace表示如果名称已存在,就替换

begin

insert into test values ('xiaoming','redhat')

end;

/

create procedure创建存储过程关键字

or repalce:表示如果名称已存在,就替换

is:也是关键字

存储过程定义的头和begin之间是定义部分(定义变量常量等等),后面提到

begin:关键字

end:结束符

begin与end结束之间就是执行部分

上面一个简单的存储过程是向某表中添加一条数据,现在先创建一张表

SQL> create table names(name varchar2(20),password varchar2(30));


Table created.

然后通过编写一个存储过程向其中添加数据


SQL> create or replace procedure sp_pro1 is

  2  begin

  3  insert into names values ('xiaoming','redhat');

  4  end;

  5  /


Procedure created.

存储过程已建立,该如何执行呢?使用关键字exec或者call,如下

SQL> exec sp_pro1;


PL/SQL procedure successfully completed.

然后查询表,看是否添加了数据

SQL> select * from names;


NAME                 PASSWORD

-------------------- ------------------------------

xiaoming             redhat


当若编写的过程有误时,可以通过show error这条命令查看错误具体信息


pl/sql编程是由最小单位块组成的,看看块的组成部分

pl/sql块由三个部分组成:定义部分、执行部分、例外处理部分

declare

  定义部分,定义常量、变量、游标、例外、复杂数据类型  

begin

执行部分,要执行的pl/sql语句和sql语句

exception

例外处理部分,处理运行的各种错误


定义部分是从declare开始的,可选

执行部分从begin开始,必选

例外处理部分从exception,可选

下面编写一条最简单的块,输出hello world

编写之前打开系统的屏幕输出信息,不然看不到效果

SQL> set serveroutput on;

SQL> begin

  2  dbms_output.put_line('hello world');

  3  end;

  4  /

hello world


PL/SQL procedure successfully completed.

最简单的块编程,只有执行部分,而且只输出了一条信息hello world。

相关说明:dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是

dbms_output包的一个过程(包里面的一个过程)


实例2:包含定义部分和执行部分

SQL> declare 

  2  v_name varchar2(20);    改行表示定义的变量,变量名v_name,数据类型为varchar2

  3  begin

  4  select ename into v_name from emp where empno=&empno;  &由键盘输出

  5  dbms_output.put_line(v_name);

  6  end;

  7  /

Enter value for empno: 7788

old   4: select ename into v_name from emp where empno=&empno;

new   4: select ename into v_name from emp where empno=7788;

SCOTT        输出到屏幕的信息v_name


PL/SQL procedure successfully completed.


实例3:包含定义部分、执行部分和例外处理部分

为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理

相关说明:oracle事先预定义了一些例外,no_data_found就是找不到数据的例外

如上述例子,如果输入烦人不是emp表中的empno号码,那么将会报错,报错该如何处理呢,这里就定义例外部分,交给他处理

SQL> declare 

  2  v_name varchar2(20);

  3  v_sal number(7,2);

  4  begin

  5  select ename,sal into v_name,v_sal from emp where empno=&empno;

  6  dbms_output.put_line(v_name||' '||v_sal);

  7  exception             定义例外关键字exception

  8  when no_data_found then    当查询不到数据时,采取措施打印error

  9  dbms_output.put_line('error');

 10  end;

 11  /

Enter value for empno: 78     78并不在emp表中的empno好中

old   5: select ename,sal into v_name,v_sal from emp where empno=&empno;

new   5: select ename,sal into v_name,v_sal from emp where empno=78;

error       打印error


过程

过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数可以将数据传递带执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在sqlplus中使用create procedure 命令来建立过程

SQL> --过程编写


SQL> create or replace procedure sp_pro1(name varchar2,pass varchar2) is 

  2  begin

  3  insert into names values (name,pass);

  4  end;

  5  /


Procedure created.

sp_pro1(name varchar2,pass varchar2):这里面的参数相当于编程里面的形参,传递的数据

然后调用该存储过程

SQL> exec sp_pro1('xiaobai','redhat');


PL/SQL procedure successfully completed.

然后查询数据是否已经插入了

SQL> select * from names;

NAME                 PASSWORD

-------------------- ------------------------------

xiaoming             redhat

xiaobai              redhat


修改表emp的雇员为smith的薪水,编写存储过程实现

SQL> create or replace procedure sp_pro1(name varchar2,v_sal number) is

  2  begin

  3  update emp set sal=v_sal where ename=name;

  4  end;

  5  /


Procedure created.

调用存储过程,传递形参数据


SQL> exec sp_pro1('SMITH',1200);


PL/SQL procedure successfully completed.

查询改变结果

SQL> select ename,sal from emp where ename='SMITH';

ENAME             SAL

---------- ----------

SMITH            1200


过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)

sp_pro1(name varchar2,pass varchar2)这里面加入的参数默认是in,如果要输出有返回值的存储过程必须加上out,看下面例子

给定一个empno雇员号,返回雇员名,编写一个存储过程

SQL> create or replace procedure sp_pro1(spno in number,spname out varchar2) is

  2  begin

  3  select ename into spname from emp where empno=spno;

  4  end;

  5  /


Procedure created.

该如何调用了,这里就不能直接exec procedure_name这样了,调用方式如下

SQL> declare

  2  v_name varchar(20);     定义一个变量,将存储过程返回出来的值存入到这个变量中

  3  begin

  4  sp_pro1(7788,v_name);

  5  dbms_output.put_line(v_name);   打印变量的值,也就是返回出来的值

  6  end;

  7  /

SCOTT


PL/SQL procedure successfully completed.


什么情况下用exec调用,什么情况下用PLSQL调用存储过程?

exec适合于调用存储过程无返回值

plsql适合于调用存储过程有返回值,不管多少个


函数

过程用于返回特定的数据,当建立函数时,在函数头必须包含return字句,而在函数体内必须包含return语句

返回的数据,创建函数用create function

SQL> --函数案例

结构:create or replace function return ..is,看下面例子

SQL> create or replace function sp_fun1(name varchar2) return number is

  2  yearsal number(7,2);

  3  begin

  4  select sal*12 into yearsal from emp where ename=name;

  5  return yearsal;   定义需要返回的

  6  end;

  7  /


Function created.

函数创建完成,该如何调用呢?

SQL> declare 

  2  v_sal number(7,2);     定义一个变量用来接收函数返回的值

  3  begin

  4  v_sal:=sp_fun1('SMITH');  将函数返回的值赋值给v_sal,赋值为:=

  5  dbms_output.put_line(v_sal);

  6  end;

  7  /

14400


PL/SQL procedure successfully completed.


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

pl/sql编程基础

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PL/SQL编程急速上手

结构化查询语言(SQL)是第四代编程语言的典型,这种命令式的语言更像一种指令,使用它,你只需要告诉计算机“做什么”,而不用告诉计算机“怎么做”。第四代编程语言普遍具有简单、易学、能更快的投入生产等优点,但也失去了部分第三代编程语言(C,C++,Java等)的灵
PL/SQL编程急速上手
2014-12-19
2023-10-05

Python 编程基础

数据类型None 值整型浮点型布尔类型 True,False字符串元组 tuple(),有序,不可变例: t1 = (1,)  t2 = (1,'Hello',1.0,True)列表 list[],有序,可变例: l = [1,'He
2023-01-31

Socket 编程基础

文章目录 一、socket 简介二、socket 编程接口介绍1. socket()函数2. bind()函数3. listen()函数4. accept()函数5. connect()函数6. 发送和接收函数read()函数rec
2023-08-18

Mysql基础编写sql案例(一)

数据库里面的数据库sql文件:https://blog.csdn.net/GongmissYan/article/details/102937816#基础查询/* 语法:、 select 查询列表 from 表名;
Mysql基础编写sql案例(一)
2021-04-12

sql 基础

去除数据库登录界面的所有用户信息C:UsersasusAppDataRoamingMicrosoftSQL Server Management Studio14.0SqlStudio.bin查询姓名中第二个字与第三个字相同:select * from Stud
2015-02-24

如何编写高效的PL/SQL报表程序

编写高效的PL/SQL报表程序需要遵循一些最佳实践和优化技巧,以下是一些建议:优化查询:确保你的SQL查询语句是高效的,包括使用合适的索引、避免全表扫描、避免不必要的连接和过滤条件等。可以使用Oracle的性能调优工具如Explain Pl
如何编写高效的PL/SQL报表程序
2024-05-07

Python基础:网络编程socket基

socket也叫套接字,是对各种协议的封装,实现收发数据。Python里socket工作过程:(图片来自网络)socket在Python中实际上是一个模块,实现发送和接收数据的功能。因为socket是一个类,所以只导入模块需要使用socke
2023-01-31

python编程基础代码

以下是一些Python编程基础代码示例:1、计算器:def add(x, y):return x + ydef subtract(x, y):return x - ydef multiply(x, y):return x * y
2023-10-25

python编程基础语法

python 是一种易读、易学的面向对象编程语言,其基础语法包括整数、浮点数、字符串、布尔值、列表、元组和字典等数据类型;变量存储数据并通过赋值运算符赋值;代码块使用缩进来组织代码;条件语句使用 if-else、elif 和 else 来根
python编程基础语法
2024-04-20

Java 网络编程基础

文章目录 前言什么是网络编程网络编程基础知识网络通讯流程长连接和短连接Socket Java 网络编程总结 前言 一个网络请求、服务之间的调用都需要进行网络通讯,在日常开发时我们可能并不会关心我们的服务端是怎么接收到请求的、
2023-08-16

如何编写高效的PL/SQL存储过程

编写高效的PL/SQL存储过程是一个需要技巧和经验的过程。以下是一些编写高效PL/SQL存储过程的建议:涉及到大量数据的操作时,尽量减少使用游标来循环处理数据。可以考虑使用BULK COLLECT和FORALL语句来一次性处理多条数据,减少
如何编写高效的PL/SQL存储过程
2024-05-07

SQL 零基础入门教程

目录一、了解 SQL二、检索数据三、排序检索数据四、过滤数据五、高级数据过滤六、用通配符进行过滤七、创建计算字段八、使用函数处理数据九、汇总数据十、分组数据十一、使用子查询十二、联结表十三、创建高级联结十四、组合查询十五、插入数据十六、更新和删除数据十七、创建
SQL 零基础入门教程
2014-09-15

编程热搜

目录