📅  最后修改于: 2020-11-12 00:56:46             🧑  作者: Mango
PL / SQL是SQL的高级版本。给出了带有答案的PL / SQL面试问题的最高列表。
PL / SQL代表对SQL的过程语言扩展。它支持编程语言和SQL的过程功能。它是由Oracle Corporation在90年代初开发的,目的是增强SQL的功能。
PL / SQL是SQL的扩展。尽管SQL是非过程性的,但PL / SQL是Oracle设计的过程性语言。发明它是为了克服SQL的局限性。
一些重要特征的列表:
类型表的对象称为PL / SQL表,建模为数据库表。我们也可以说PL / SQL表是提供数组的一种方式。数组就像内存中的临时表一样,可以非常快速地进行处理。 PL / SQL表用于移动批量数据。它们简化了移动的数据收集。
PL / SQL中有两种类型的数据类型:
PL / SQL使用BLOCK结构作为其基本结构。每个PL / SQL程序均由构成PL / SQL块的SQL和PL / SQL语句组成。
PL / SQL块包含3个部分。
函数:PL / SQL函数的主要目的通常是计算并返回单个值。函数在其规范中具有返回类型,并且必须返回该类型中指定的值。
过程:过程没有返回类型,并且不应返回任何值,但是它可以具有一个return语句,该语句仅停止其执行并返回给调用方。一个过程用于返回多个值,否则它通常类似于一个函数。
包:包是架构对象,将逻辑上相关的PL / SQL类型,项目和子程序分组。您也可以说它是一组函数,过程,变量和记录类型的语句。它提供了模块化功能,因为它有助于应用程序开发。它用于隐藏未经授权的用户的信息。
异常是PL / SQL的错误处理部分。有两种类型的异常:pre_defined异常和user_defined异常。
问候:='你好'|| '世界';
不可以。PL/ SQL不支持CREATE等数据定义命令。
当存储过程不返回值时,函数将返回值。
每当发生错误时,就会发生异常。错误是错误,而异常是警告或错误情况。
更快地访问表中的数据块。
您可以在DECLARE部分下使用关键字EXCEPTION声明用户定义的异常。
句法:
EXCEPTION;
PL / SQL中的预定义异常列表:
触发器是存储在数据库中的PL / SQL程序。它在执行INSERT,UPDATE和DELETE命令之前或之后立即执行。
12个触发器。
PL / SQL中有12种类型的触发器,包含BEFORE,AFTER,ROW,TABLE,INSERT,UPDATE,DELETE和ALL关键字的组合。
触发器是自动执行的,无需用户采取任何操作,而存储过程则由用户显式调用。
当触发器与视图关联时,通常会启用基表触发器。
WHEN子句指定要触发的触发器必须为真的条件。
ALTER TRIGGER update_salary DISABLE;
DROP TRIGGER命令。
表列称为THEN.column_name和NOW.column_name。
对于与INSERT相关的触发器,NOW.column_name值仅可用。
对于与DELETE相关的触发器,THEN.column_name值仅可用。
对于与UPDATE相关的触发器,两个Table列均可用。
存储过程是执行一个或多个特定功能的语句序列或命名的PL / SQL块。它类似于其他编程语言中的过程。它存储在数据库中,并且可以重复执行。它存储为架构对象。它可以嵌套,调用和参数化。
Oracle使用工作区来执行SQL命令。 Oracle处理SQL命令时,它将在内存中打开一个称为“私有SQL区域”的区域。该区域由光标标识。它允许程序员命名该区域并访问其信息。
隐式游标由Oracle隐式声明。这是所有仅返回一行的DDL和DML命令的光标。
为返回多行的查询创建显式游标。
游标属性SQL%ROWCOUNT将返回由SQL语句处理的行数。
如果至少处理了一行,它将返回布尔值TRUE。
如果未处理任何行,则返回布尔值TRUE。
可以将PL / SQL包指定为一个文件,该文件将功能,游标,存储过程和变量集中在一个位置。
PL / SQL软件包包含以下两个部分:
规范部分:指定用于定义应用程序接口的部分。
正文部分:此部分指定在何处定义规范的实现。
DROP PACKAGE命令用于删除软件包。
有两种执行存储过程的方法。
在SQL提示符下,写EXECUTE或EXEC,后跟procedure_name。
EXECUTE or [EXEC] procedure_name;
只需使用过程名称
procedure_name;
模块化,可扩展性,可重用性,可维护性和一次编译。
%ISOPEN:它检查游标是否打开。
%ROWCOUNT:返回受DML操作影响的行数:INSERT,DELETE,UPDATE,SELECT。
%FOUND:它检查游标是否已获取任何行。如果是,则为TRUE。
%NOTFOUND:它检查游标是否已获取任何行。如果否-TRUE。
PL / SQL编译器可以轻松检测到语法错误。例如:拼写不正确等,而运行时错误则通过PL / SQL块中的异常处理部分进行处理。例如:SELECT INTO语句,不返回任何行。
对于Commit语句,满足以下条件:
事务结束时发出Rollback语句。以下条件适用于Rollback语句:
使用SAVEPOINT,只能撤消部分事务。
当触发器尝试更新其当前正在使用的行时,发生突变表错误。它通过使用视图或临时表来修复。
一致性只是意味着每个用户都能看到一致的数据视图。
考虑一个示例:有两个用户A和B。A将钱转入B的帐户。此处,更改将在A的帐户(借方)中更新,但直到将其更新为B的帐户(贷方)为止,然后其他用户才能看到A的帐户的借方。在借记A并贷记B后,可以看到更新。那是一致性。
游标是执行SQL语句时在系统内存中创建的临时工作区。
游标包含有关select语句及其访问的数据行的信息。该临时工作区存储从数据库检索的数据并处理该数据。游标可以容纳多于一行,但一次只能处理一行。需要游标来单独处理行以进行查询。
PL / SQL中有两种游标类型。