PL SQL 过程和函数的完整指南
已发表: 2023-01-30编程语言是一种用于编写计算机程序的系统。 虽然许多编程语言是基于文本的,但其他语言也可能是图形化的。 这些语言帮助程序员与计算机进行交流。 结构化查询语言 (SQL) 就是这样一种编程语言,它有助于存储、操作和检索存储在关系数据库中的数据。 在今天的指南中,我们将分享有关执行作为 PL SQL 子程序的名称块(过程和函数)的详细信息。 因此,如果您一直在寻找有关 PL SQL 过程和函数的详尽指南,那么您来对地方了。 在本文档中,除了涵盖 PL SQL 存储过程主题外,您还将了解 PL SQL 过程示例。 更不用说 PL SQL 调用过程、PL SQL 退出过程和 PL SQL 函数示例,如果您是新手程序员,学习这些内容同样重要。 因此,让我们开始使用我们关于 PL SQL 的详尽指南。
内容
- PL SQL 过程和函数的完整指南
- 什么是 PL SQL?
- 什么是 PL SQL 中的过程和函数?
- 如何在 PL SQL 中创建存储过程和函数?
- PL SQL 中存储过程和函数的优点
- 创建存储过程的语法
- PL SQL 过程示例
- 在 PL SQL 中创建函数的语法
- PL SQL 函数示例
- 什么是 PL SQL 退出过程?
- 存储过程和函数过程的区别
PL SQL 过程和函数的完整指南
在这里,我们通过示例详细展示了 PL SQL 过程和函数。
什么是 PL SQL?
- PL SQL 是对 SQL 的过程语言扩展的缩写形式。
- PL SQL 是一种面向程序员的块结构语言,可帮助他们将 SQL 的强大功能与过程语句相结合。
- 它是甲骨文公司的程序扩展。
- 这种过程语言在Oracle数据库、 Times Ten内存数据库和IBM Db2中可用。
- 在运行时,PL/SQL 和 SQL 通过在同一个服务器进程中运行来带来最佳效率。
- PL SQL通过增强数据库的可移植性、安全性和健壮性,确保有效和不受干扰地处理SQL语句。
- PL SQL 只是指指示编译器通过SQL做什么以及如何通过它的过程方式来做。
- PL SQL 通过使用循环、条件和面向对象的概念为程序员提供更多控制。
什么是 PL SQL 中的过程和函数?
- PL SQL 有两个子程序,称为过程和函数。
- 通常,一个过程用于执行一个动作,一个函数用于计算一个值。
- PL SQL 中的子程序有声明部分、可执行部分和可选的异常处理部分。
- 这些子程序可以创建并作为数据库对象保存在数据库中。
- PL SQL中的过程和函数子程序返回一个单一的值,主要用于计算和返回一个值。
- 这些子程序只是可以执行特定任务的PL/SQL 和 SQL 语句的集合。
如何在 PL SQL 中创建存储过程和函数?
当编写 PL SQL 存储过程或函数的代码块时,它们由 Oracle 引擎编译。 编译后,它被存储为数据库对象。 存储过程或代码功能块由三部分组成:
- 声明部分:在此部分中,声明过程或函数要使用的变量、常量、游标或异常。
- 可执行部分:在这部分中,编写了所创建的过程或函数的定义。 这部分还包括 PL/SQL 或 SQL 语句赋值、操作数据和控制执行。
- 异常处理部分:最后一部分是可选的,其中写入了预期的异常,这些异常可能会在执行可执行部分中编写的代码时出现。
PL SQL 中存储过程和函数的优点
在我们揭开 PL SQL 过程示例之前,您必须首先了解过程和函数子程序的优点。
- 增强数据库性能:Oracle 引擎有助于自动编译。 此外,无论何时完成 PL SQL 调用过程或函数,Oracle 引擎都会将编译后的代码加载到系统全局区 SGA 中,这有助于加快执行速度。
- Reusability and no Redundancy : 代码行数不能重复编写,因为过程或函数的同一代码块可以在多个数据上调用任意次数。
- 安全性:数据库的安全性也通过使用存储过程或函数来维护,因为它有助于通过向用户授予权限来控制使用和访问。 虽然,没有授予用户编辑或操作数据库的权限。
- 完整性:使用 PL SQL 存储过程或函数的另一个优点是它确保完整性,因为它们被 Oracle 引擎存储为数据库对象。
- 保存内存:存储过程或函数的众多好处之一是它们共享内存,这有助于将内存保存为过程或函数的单个副本,可以由多个有权执行相同操作的用户加载。
另请阅读:如何修复 javascript:void(0) 错误
创建存储过程的语法
您可以查看以下用于在 Oracle 中创建存储过程的语法:
创建或替换过程 <procedure_name> (<变量名>IN/OUT/IN OUT <数据类型>, <变量名>IN/OUT/IN OUT <数据类型>,...) IS/AS 变量/常量声明; 开始 -- PL/SQL 子程序体; 例外 -- 异常处理块; END <程序名称>;
在上面的代码中:
- Procedure_name表示过程的名称。
- Variable_name表示存储过程中使用的变量的名称。
- Create或Replace procedure代表一个关键字,用于指定要创建的过程的名称。
- Begin 、 Exception和End表示用于指示创建过程的不同部分的关键字。
- IN/OUT/IN OUT表示参数模式,其中IN指READ ONLY模式,用于变量,通过它接受用户的值。 这是默认参数模式。
- OUT指WRITE ONLY模式,用于将值返回给用户的变量。
- IN OUT指的是READ和WRITE模式,用于接受值或将值返回给用户的变量。
- <procedure_name>表示过程定义的结束。 您也可以简单地使用 END 代替它。
PL SQL 过程示例
对于下面的过程代码,这里有一个简单的示例,可以清楚地演示使用存储过程将两个数字相加:
设置服务器输出; CREATE OR REPACE PROCEDURE Sum(其中a IN number,b IN number)是c number; 开始 c := a+b; dbms_output.put_line('两个数之和='|| c); 结束总和;
在调用过程的情况下,将执行以下代码:
设置服务器输出; 宣布 x 号; y 号; 开始 x := &x; y := &y; 总和(x,y); 结尾; 在哪里: 输入 x 的值:10 输入 y 的值:20 两数之和:30
PL SQL 过程已成功创建。
在 PL SQL 中创建函数的语法
现在您已经知道如何为存储过程及其示例创建语法,是时候阐明在 PL/SQL 中创建函数了:
创建或替换函数 <function_name> (<变量名> IN <数据类型>, <变量名> IN <数据类型>,...) RETURN <数据类型> IS/AS 变量/常量声明; 开始 -- PL/SQL 子程序体; 例外 -- 异常处理块; END <函数名>;
在上面的代码中:
- Function_name表示函数的名称。
- Variable_name表示函数中使用的变量的变量名。
- Create或Replace function表示用于要创建的函数名称的关键字。
- IN表示READ ONLY模式,用于变量,它将接受来自用户的值。 这是默认参数。
- Return代表一个关键字,其后跟一个数据类型,指定函数将要返回的值的数据类型。
另请阅读:修复命令失败,错误代码为 1 Python Egg 信息
PL SQL 函数示例
下面给出的是 PL SQL 函数的示例,它演示了如何使用该函数将两个数字相加:
设置服务器输出; 创建或替换函数 Sum(a IN number, b IN number) RETURN Number IS c号; 开始 c := a+b; 返回 c; 结尾;
在调用函数 sum 的情况下,将执行以下代码:
设置服务器输出; 宣布 1号; 2号; 结果编号; 开始 no1 := &no1; no2 := &no2; 结果 := Sum(no1,no2); dbms_output.put_line('两个数之和='||result); 结尾; 在哪里: 输入 no1 的值:5 输入 no2 的值:5 两数之和:10
PL SQL 过程已成功创建。
阅读下一节以了解 PL SQL 退出过程。
什么是 PL SQL 退出过程?
一旦满足 WHEN 子句中的条件,当语句退出循环的当前迭代时,退出会有所帮助,并将控制权转移到当前正在进行的循环的末尾。 Exit 语句不能在循环外使用,用于无条件地使用 Exit 和 Continue 语句或有条件地使用 Exit When 和 Continue When 语句退出循环。
存储过程和函数过程的区别
现在您已经了解了 PL SQL 中的过程和函数,现在终于可以了解两者之间的基本区别了:
- 存储过程可能会也可能不会向程序的调用部分返回一个值,而函数会向程序的调用部分返回一个值。
- 存储过程使用 OUT 参数返回值,而函数使用 RETURN 返回值。
- 存储过程使用 IN、OUT、IN OUT 参数,而函数仅使用 IN 参数。
- 如果存储过程在对其进行调用后要返回,则它不会指定数据类型,而函数指定在对其进行调用后将返回的值的数据类型。
- 不能从代码的功能块调用存储过程,而可以从过程代码块调用函数。
推荐的:
- DDR4 与 DDR5 RAM:哪个更适合游戏?
- 面包板有哪些类型?
- 如何解析文本
- 在 SQL 中通过定界符拆分字符串的 4 种方法
我们希望我们关于PL SQL 中的过程和函数的文档能够帮助并成功地回答您对 PL SQL 及其子程序、过程和函数、PL SQL 退出过程等的所有疑问。 如果我们以任何方式帮助您或您有更多疑问,请在下方留下您的评论让我们知道。