广告
返回顶部
首页 > 资讯 > 数据库 >pl/sql编程基础
  • 219
分享到

pl/sql编程基础

2024-04-02 19:04:59 219人浏览 安东尼
摘要

PL/sql1、过程、函数、触发器是pl/sql编写的2、过程、函数、触发器是存放在oracle数据库中的3、pl/sql是非常强大的过程化语言4、过程、函数、触发器可以在java程序中调用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.


您可能感兴趣的文档:

--结束END--

本文标题: pl/sql编程基础

本文链接: https://www.lsjlt.com/news/42639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • pl/sql编程基础
    PL/SQL1、过程、函数、触发器是pl/sql编写的2、过程、函数、触发器是存放在oracle数据库中的3、pl/sql是非常强大的过程化语言4、过程、函数、触发器可以在java程序中调用pl/sql编写...
    99+
    2022-10-18
  • Oracle 笔记(七)、PL/SQL 基础
    一、概述、PL/SQL 块结构PL/SQL 是Oracle产品对 SQL 语言的扩展。PL/SQL 块共分为三个部分:声明部分、可执行部分、异常部分。DECLARE    .....
    99+
    2022-10-18
  • ORACLE PL/SQL编程详解
    SQL语言只是访问、操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发。PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据...
    99+
    2022-10-18
  • PL/SQL编程急速上手
    结构化查询语言(SQL)是第四代编程语言的典型,这种命令式的语言更像一种指令,使用它,你只需要告诉计算机“做什么”,而不用告诉计算机“怎么做”。第四代编程语言普遍具有简单、易学、能更快的投入生产等优点,但也失去了部分第三代...
    99+
    2014-12-19
    PL/SQL编程急速上手
  • SQL Server 数据库基础编程详解
    目录Go批处理语句使用、切换数据库创建、删除数据库方法1、方法2(设置文件大小)、基本数据类型判断表或其他对象及列是否存在创建、删除表给表添加字段、修改字段、删除字段添加、删除约束插...
    99+
    2022-11-13
  • sql 基础
    去除数据库登录界面的所有用户信息 C:UsersasusAppDataRoamingMicrosoftSQL Server Management Studio14.0SqlStudio.bin 查询姓名中第二个字与第三个字相同: selec...
    99+
    2015-02-24
    sql 基础
  • Oracle之PL/SQL编程_流程控制语句
    选择语句1. if...then 语句语法:if < condition_expression > then plsql_sentence end&nbs...
    99+
    2022-10-18
  • Mysql基础编写sql案例(一)
    数据库里面的数据库sql文件:https://blog.csdn.net/GongmissYan/article/details/102937816 #基础查询 # 查询单个字段 select last_name f...
    99+
    2021-04-12
    Mysql基础编写sql案例(一)
  • Python 编程基础
    数据类型 None 值 整型 浮点型 布尔类型 True,False 字符串 元组 tuple(),有序,不可变 例: t1 = (1,)  t2 = (1,'Hello',1.0,True) 列表 list[],有序,可变 例...
    99+
    2023-01-31
    基础 Python
  • Socket 编程基础
    文章目录 一、socket 简介二、socket 编程接口介绍1. socket()函数2. bind()函数3. listen()函数4. accept()函数5. connect()函数6. 发送和接收函数read()函数rec...
    99+
    2023-08-18
    linux 网络 服务器 tcp/ip 物联网
  • php基础编程
    了解PHP PHP是什么 PHP能干什么?开发网站 输出一个属于自己的第一个PHP程序 标识 [告诉你] echo 'Hello World'; 代码 echo [指令] 输出 人人都会编程 ...
    99+
    2023-10-05
    php 服务器 开发语言
  • Oracle工具PL/SQL的基本语法
    在本章中,我们将学习PL/SQL的基本语法,PL/SQL是块结构语言; PL/SQL程序划分成几个部分,并在每个部分中写入逻辑代码块。每个块由三个子部分组成 - 声明部分 ...
    99+
    2022-11-12
  • SQL 教程-入门基础篇
    文章目录 SQL 简介SQL 语法SQL SELECT 语句SQL SELECT DISTINCT 语句SQL WHERE 子句SQL AND & OR 运算符SQL ORDER BY...
    99+
    2023-08-31
    sql 数据库 mybatis mysql
  • SQL 零基础入门教程
    目录一、了解 SQL二、检索数据三、排序检索数据四、过滤数据五、高级数据过滤六、用通配符进行过滤七、创建计算字段八、使用函数处理数据九、汇总数据十、分组数据十一、使用子查询十二、联结表十三、创建高级联结十四、组合查询十五、插入数据十六、更...
    99+
    2014-09-15
    SQL 零基础入门教程
  • SQL理论基础
    一、概述1.SQL定义及历史SQL:Structured Query Language,结构化查询语言。是关系数据库的标准语言;SQL功能不仅是查询。几乎所有关系型数据库管理系统软件都支持SQL。许多软件厂...
    99+
    2022-10-18
  • SQL 基础整理
    SQL语句执行顺序 From 表连接 on连接条件,形成新的虚拟表 where 筛选条件 group by 生成新的结果集合  group by 分组列表 having 分组后筛选 select...
    99+
    2020-06-11
    SQL 基础整理
  • SQL语言基础
    1.定义 对数据库进行查询和修改操作的语言叫做SQL(Structured Query Language,结构化查询语言) SQL是一种数据库查询和程序设计语言,用于存储数据以及查询、更新和管理关系数据库系统; 与其他程序设计语言不同的是,...
    99+
    2020-08-11
    SQL语言基础 数据库入门 数据库基础教程 数据库 mysql
  • SQL注入基础
    引言 靓仔们是否经常听到sql注入呢,那么sql注入到底是什么? 引用微软官方的语言来说: SQL 注入是一种攻击方式,在这种攻击方式中,在字符串中插入恶意代码,然后将该字符串传递到 SQL Server 的实例以进行分析和执行。 构成...
    99+
    2023-09-18
    数据库 服务器 mysql
  • SQL Server数据库基础编程的方法有哪些
    本篇内容主要讲解“SQL Server数据库基础编程的方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server数据库基础编程的方法有哪些”吧!Go批处理语...
    99+
    2023-06-26
  • Python基础:网络编程socket基
    socket也叫套接字,是对各种协议的封装,实现收发数据。Python里socket工作过程:(图片来自网络)socket在Python中实际上是一个模块,实现发送和接收数据的功能。因为socket是一个类,所以只导入模块需要使用socke...
    99+
    2023-01-31
    网络编程 基础 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作