4 Star 24 Fork 6

cncounter / translation

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
plsql_1day.md 30.27 KB
一键复制 编辑 原始数据 按行查看 历史
renfufei 提交于 2014-11-14 19:54 . 初稿

PL/SQL基础教程

本文来自《sam自学PL / SQL在21天,第二版》 ! 如果你是新的Oracle环境,这本书将帮助你快速学习和掌握甲骨文的内置程序语言。 知识的PL / SQL过程语言/结构化查询语言)是成为一个基本的必要性不管你使用甲骨文的许多产品。

今天,在你的第一天,你将完成这些任务:

PL / SQL是什么,为什么你要学习掌握它

了解Oracle PL / SQL与其他产品

你需要学习什么资源来完成这本书

编写你的第一个PL / SQL函数

在剩下的20天,你深入了解这门语言的力量和能力,学习如何在应用程序中利用其权力不管你正在做客户端/服务器编程与甲骨文的工具(如开发人员/ 2000),使用其他前端工具(比如PowerBuilder),或者只是写一些在服务器上运行的批处理作业。

PL / SQL是什么? Oracle PL / SQL是一种程序语言,发展为一个扩展标准的SQL提供数据库上执行过程逻辑的一种方式。

新学期, 如果你有与关系数据库在过去,毫无疑问你是熟悉SQL,这代表 结构化查询语言 。 SQL本身就是一个强有力的声明性语言。 这是 声明 在某种意义上,你描述你想要的结果,但不是他们是如何获得的。 这很好,因为你可以使应用程序从数据的物理存储的细节。 主管SQL程序员也可以推动大量的处理工作回通过创造性使用SQL服务器级别。

不过也有限制,你可以用一个声明式查询完成。 现实世界很少我们想一样整洁。 开发人员常常发现自己需要连续执行多个查询和处理一个查询之前的具体结果。 这导致在客户机/服务器环境中两个问题:

程序逻辑,即过程的定义,驻留在客户机上。

需要查看的数据从一个查询和使用它作为下一个查询结果的基础增加的网络流量。

为什么这些问题? 客户机机器上的程序逻辑可以迅速成为不同步,如果软件升级。 它还可以实现错误,导致数据库完整性的丧失。 需要拉下来大量的中间数据客户端结果在漫长的等待最终用户必须坐在那里盯着沙漏在数据转移到他们的机器。 的累积效应的客户数量将大量数据通过网络进一步降低性能。

PL / SQL为开发人员提供了一种机制,添加一个程序在服务器级组件。 它已得到增强,开发人员现在可以访问一个全功能的过程语言的所有功能在服务器级别。 它还形成了编程的基础在甲骨文的不断创新并推出客户端/服务器开发工具,尤其是开发人员/ 2000。

为什么学习PL / SQL ? 如果您正在开发和甲骨文的产品,开发人员/ 2000为例,这个问题的答案很简单。 你需要知道的PL / SQL,因为这些产品使用PL / SQL过程代码。 但是如果你不开发与甲骨文的产品? 如果你使用的是甲骨文的数据库引擎? PL / SQL的使用吗? 是的! 绝对是。

无论您正在使用的前端工具,您可以使用PL / SQL服务器上执行处理,而不是客户端。 您可以使用PL / SQL来封装业务规则和其他复杂的逻辑。 它提供了模块化和抽象。 你可以用它在数据库触发器代码复杂约束,执行数据库完整性;记录变化;复制数据。 还可以使用PL / SQL存储过程和函数来提供增强的数据库安全。 最后,它为你提供了一个平台独立性。 甲骨文是许多硬件平台上实现,但是PL / SQL是相同的所有。 它没有区别,无论你是在笔记本电脑上运行个人Oracle或Oracle8i企业在UNIX。

不管您使用什么开发工具,如果您正在开发在Oracle环境,你的PL / SQL知识和应用能力,它将给你一个竞争优势对那些没有这些知识。 PL / SQL您有权使应用程序更加健壮,更高效,更安全。

PL / SQL SQL、SQL * Plus:有什么区别吗? 这个问题一直困扰着很多人新甲骨文。 有几个产品字母“SQL”标题,和这三个SQL * Plus,SQL和PL / SQL,常常一起使用。 正因为如此,很容易成为困惑,产品做的工作和工作被做。 本节简要地描述了这三个产品。

sql

SQL结构化查询语言。 这已经成为 通 用语 数据库访问的语言。 已通过国际标准组织(ISO)和也已经通过了美国国家标准协会(ANSI)。 当你的代码语句等 选择 , 插入 , 更新 , 删除 SQL是您正在使用的语言。 它是一种声明性语言,总是在数据库服务器上执行。 你经常会发现自己编码SQL语句在一个开发工具,如PowerBuilder或Visual Basic,但在运行时执行这些语句发送到服务器。

pl / sql PL / SQL是甲骨文 程序语言 扩展SQL。 它也通常运行在数据库服务器上,但有些Oracle等产品开发人员/ 2000也包含一个PL / SQL引擎,驻留在客户机上。 因此,您可以运行你的PL / SQL代码在客户端或服务器根据哪个更适合手头的任务。 与SQL PL / SQL 程序上的 ,而不是声明。 这意味着代码指定如何做的事情。 在SQL,但是,你需要一些方法来发送你的PL / SQL代码到服务器来执行。 PL / SQL还使您能够嵌入SQL语句在程序代码。 这种紧密关系PL / SQL、SQL和SQL * Plus是造成一些混淆的产品。

SQL * Plus SQL * Plus是一个交互式程序,允许您输入并执行SQL语句。 它还使您可以键入PL / SQL代码并将其发送到服务器执行。 SQL * Plus是一种最常见的前端用于开发和创建PL / SQL存储过程和函数。

会发生什么当您运行SQL语句的SQL * Plus和类型? 处理发生在哪里? SQL * Plus到底做什么,和数据库是做什么的? 如果你在Windows环境中,你有一个数据库服务器在网络上的某个地方,以下事情:

SQL * Plus在网络上传送你的SQL查询到数据库服务器。

SQL * Plus数据库服务器等待回复。

数据库服务器执行查询并将结果返回给SQL * Plus。

SQL * Plus将查询结果显示在你的电脑屏幕上。

即使你不是运行在网络Windows环境下,同样的事情发生。 唯一的区别可能是,数据库服务器和SQL * Plus是同一个物理机器上运行。 这将是真实的,例如,如果您运行个人甲骨文在单个电脑。

PL / SQL以同样的方式执行。 PL / SQL块输入SQL * Plus,并传播到数据库服务器来执行。 如果有任何SQL语句的PL / SQL代码,它们被发送到服务器的SQL引擎执行和结果返回给PL / SQL程序。

重要的是SQL * Plus不执行SQL查询。 SQL * Plus也不执行你的PL / SQL代码。 SQL * Plus仅仅作为你的窗口到Oracle数据库,这是真正的行动。 图1.1说明了这种关系。

图1.1

SQL * Plus,关系和Oracle PL / SQL。

其他几个工具除了SQL * Plus数据库可以作为你的窗口。 服务器管理器,一个接口类似于SQL * Plus,就是这样一个工具,尽管甲骨文计划在未来的某个时候停止支持它。 如果你安装了Oracle Enterprise Manager,你应该看看SQLPlus工作表。 SQLPlus工作表是一个GUI工具,与SQL * Plus完全兼容,但更容易使用。 如果你是一个开发人员2000年的程序员,你会获得甲骨文程序Builder-a工具设计用于开发和调试PL / SQL代码。 你会了解更多关于SQLPlus工作表和程序构建器在本章后面。

SQL * Plus用于大部分的例子在这本书中,因为它普遍可用性给开发商。 它仍然可能是最广泛使用的工具来开发、测试和创建PL / SQL存储子程序和SQL查询。

注意: 除了甲骨文的工具,一些第三方供应商也有工具,可用于开发PL / SQL代码。 在这个空间的一些主要产品

SQL-Programmer由Sylvain浮士德Inc .)网址: http://www.bmc.com/

SQL-Station铂科技有限公司网址: http://www.cai.com/

SQL-Navigator追求软件。 网络地址: http://www.quest.com/

Oracle应用程序开发人员工具软件(蟾蜍)的追求。 网络地址: http://www.quest.com/

你需要完成这本书 为了尝试并完成练习的例子在这本书里,你将需要访问

Oracle8i数据库(个人版将工作)

SQL * Plus或SQLPlus工作表

注意: 在可能的情况下,这本书中的练习和示例设计同样在Oracle8和Oracle8i运行。 许多人,尤其是那些在第一个九天,甚至会Oracle7下运行。 然而,Oracle8i包含许多新特性,在以前版本中不可用。 天10、11、12、20和21日特别严重关注我的新特性。

如果你目前没有访问Oracle数据库,至少有两种方法可以得到一个。 名义成本,你可以访问Oracle的在线商店和购买一个30天的评估版的几乎所有的Oracle产品,包括数据库。 你可以在线Oracle存储从Oracle的主页, http://www.oracle.com 。 另一个选择是加入甲骨文技术网络(OTN)。 OTN会员可以下载developer-licensed甲骨文的数据库软件免费的副本。 OTN成员也可以选择订阅各种技术跟踪为了得到定期出货甲骨文软件光盘。 你可以注册为一个OTN会员免费。 URL访问 http://technet.oracle.com

你需要这些数据库特权角色:

创建过程

创建序列

创建会话

创建表

创建触发器

创建视图

创建类型

以下Oracle-supplied包应该提供:

DBMS_OUTPUT

DBMS_SQL

来实现

DBMS_PIPE

DBMS_ALERT

您的数据库管理员可以帮助你确认这些包是可用的。

如果您使用的是Oracle8i个人版,您可以通过登录验证这些包的存在作为用户系统和发出以下查询:

-- SELECT object_name FROM dba_objects WHERE owner='SYS' AND object_type = 'PACKAGE';

生成的列表将会显示你所拥有的数据库中的所有包的用户系统。 的包命名这一章应该在列表中。 的人, DBMS_OUTPUT 是最重要的,在大部分的练习和使用例子来显示结果。 探讨了其他包只在特定的章节。

警告- - - - - - 我建议你不要使用生产数据库,创建示例表的模式并不与其他用户共享。 如果您使用个人Oracle在你自己的电脑,你不会有问题。 如果您使用的是雇主的设施,你可能想和你的老板讨论使用的数据库的数据库管理员,或DBA,因为他们通常被称为。 本身没有什么危险的练习或例子,但总有一个编码错误的风险,如一个无限循环,可能占用CPU和I / O资源。 总是好的礼仪最小化你的错误的潜在影响对其他开发人员和最终用户。

开始使用PL / SQL 现在你应该有一个基本的了解PL / SQL是什么,以及它如何与其它甲骨文产品。 你应该访问Oracle数据库环境在工作中或在家里。 在本章的其余部分,您将了解一些基本的PL / SQL,您将编写第一个Oracle存储功能。

PL / SQL块结构化 新学期, PL / SQL称为 块结构 语言PL / SQL块是一个语法单位,可能包含程序代码,变量声明,错误处理程序、过程、函数、甚至其他PL / SQL块。

PL / SQL块的语法

-- DECLARE variable_declarations BEGIN program_code EXCEPTION exception_handlers END;

在这个语法, variable_declarations 是任何您想要定义的变量。 嵌套游标定义和PL / SQL过程和函数也这里定义。 program_code 指的PL / SQL语句的块。 exception_handlers 指的是程序代码,触发事件的一个运行时错误或异常。

PL / SQL块的声明部分是可选的,但在实践中这是不寻常的没有任何声明。 PL / SQL块的异常处理程序部分也是可选的,你不会看到它,直到第七天,“程序、包、错误和异常。”

注意: 当你定义PL / SQL函数、过程,和触发器,关键字 声明 是不习惯。 当定义一个函数,功能规格,或函数头,有时被称为块开始。 同样,过程和触发器规范开始过程和触发器。 块函数、过程和触发器在第二天会详细介绍,“写声明和街区。”

新学期, 任何变量声明必须立即跟进 声明 和之前 开始 。 的 开始 和 结束 关键词划的程序部分。 这就是代码。 的 异常 关键字表示代码的主体,并开始一节包含异常处理代码。 分号结束时,在每个语句,PL / SQL语句 《终结者》 结束,意味着块。

提示, 省略分号结束时一块是一种常见的监督。 离开了,你会得到一个语法错误。 记得把它,你会节省大量的恶化。

块,如所示“PL / SQL块的语法形式所有PL / SQL编程的基础。 Oracle存储过程由一个PL / SQL块。 Oracle存储函数由一个PL / SQL块。 Oracle数据库触发器由一个PL / SQL块。 是不可能执行PL / SQL代码,除了作为一个块的一部分。

PL / SQL块 嵌套的 。 一块可以包含另一个块如下例所示:

-- DECLARE variable declarations go here BEGIN some program code BEGIN code in a nested block EXCEPTION exception_handling_code END; more program code END;

编译和执行一个简单的块 你准备好尝试编写你的第一个PL / SQL代码? 好。 记住,和所有其他的例子在这本书中,您将使用SQL * Plus将PL / SQL代码发送到Oracle数据库执行。

首先运行SQL * Plus和连接Oracle数据库。 你最初的SQL * Plus屏幕应该类似于图1.2所示。

接下来,键入以下代码清单1.1所示。 注意到年底削减。 必须输入,如下所示。

SQL * Plus,关系和Oracle PL / SQL。

图 2

最初的SQL * Plus屏幕。

清单1.1第一PL / SQL块

DECLARE x NUMBER; BEGIN x := 72600; END; /

提示, 年底削减告诉SQL * Plus,你完成打字PL / SQL代码。 SQL * Plus将代码发送到Oracle数据库执行。 具有意义的削减SQL * Plus,PL / SQL。

提示, 斜杠字符必须输入一行本身,必须第一个字符行;否则,它将被发送到数据库并生成一个错误消息。

你输入削减后,SQL * Plus传送代码甲骨文执行。 代码执行后,您的输出应如以下几点:

-- declare x integer; begin x := 65400; end; /

PL/SQL procedure successfully completed 您刚刚执行的代码可能不是非常令人兴奋,可能是因为没有输出。 PL / SQL确实有一些有限的输出设备,和明年你将学习如何制作一些简单的屏幕输出。

一些输出呢? 最初设计时,PL / SQL没有输出设备。 记住,PL / SQL不是一个独立的语言。 它几乎总是与其他程序或工具,结合使用处理的输入,输出,和其他用户交互。

甲骨文现在包括 DBMS_OUTPUT 与PL / SQL包,为您提供一些有限的输出能力。 你将学习更多关于包在第八天,“使用SQL,但是现在它足以知道你可以使用 dbms_output.put_line 过程如清单1.2所示。

清单1.2显示的使用PL / SQL块 dbms_output.put_line 过程

-- DECLARE x NUMBER; BEGIN x := 72600; dbms_output.put_line('The variable X = '); dbms_output.put_line(x); END; /

的 dbms_output.put_line() 过程到底需要一个参数并生成一行文本从数据库服务器作为输出。 为了让你看到行文本,你必须告诉SQL * Plus来显示它。 这是完成了SQL * Plus命令:

-- SQL> SET SERVEROUTPUT ON

现在输入前面的命令。 每个会话,只需要执行一次,所以你不需要补发,除非你退出SQL * Plus,再次回到。

接下来,键入PL / SQL代码清单1.2。 结果得到的输出从SQL * Plus应该如下所示。

-- The variable x= 72600

注意: SQL * Plus,打印服务器输出在屏幕上你可以看到。 你必须记住执行 设置serveroutput 命令,或者你不会看到任何输出。 你也可以使用 引起SERVEROUTPUT 命令关闭输出,当你不想看到它。


替代重打 直到现在,你一直在重打你试过每个PL / SQL块。 如果你犯了一个错误,你必须输入代码。 有一些替代直接打字PL / SQL SQL * Plus。 根据您的个人喜好,你想做什么,有三个基本的方法来做这件事:

剪切和粘贴在记事本。

使用SQL * Plus执行文本文件 @ 命令。 使用SQL * Plus 编辑 命令。

第一个方法是运行Windows记事本,输入您的PL / SQL代码(或SQL查询),然后从记事本复制和粘贴到SQL * Plus执行所需的代码。 这种方法非常适合尝试短片段的PL / SQL代码和SQL查询。 你可以保持几个相关的项目在同一个文本文件,你可以轻松地调用它们当你想工作。

第二种方法使用了一个SQL * Plus命令来执行一个文件。 例如,如果你有一个文本文件命名 test.sql 清单1.2中的代码,您可以执行文件通过输入这个命令:

SQL> @c:\a\test 产生的输出会看起来像:

The variable X = 65400 注意: 当你执行一个文件时,默认的文件扩展名 . sql 。 SQL * Plus查找文件首先在默认目录,然后遵循一个搜索路径,您可以定义。 你如何定义这个路径是操作系统特定的和超出了本书的范围。 ,你应该咨询 SQL * Plus用户指南 还有您的操作系统文档。

执行这样的命令从文件的情况下,最有用的你重新创建一个存储过程,函数,或者数据库触发器,你已经定义了存储在自己的文本文件。

第三个选项是使用SQL * Plus 编辑 命令来调用系统的文本编辑器。 在Windows下,这将是记事本除非你有专门定义一个不同的编辑器。 当你的问题 编辑 命令,SQL * Plus将启动记事本并自动在它最近的文本PL / SQL块或执行的SQL语句。 为这样的一个示例见图1.3。

图 1.3 使用SQL * Plus 编辑 命令。

在你长大的记事本,您可以编辑PL / SQL块能让你满意,然后退出记事本,确定保存文件。 当您保存您的文件时,SQL * Plus不会立即重新制作。 它仅仅是放置在一个内部缓冲区。 你必须使用 / 命令,通过输入 / 行本身,为了执行代码编辑。

使用 编辑 命令运行良好,只要你记住一个重要的事情。 SQL * Plus只记得最近的SQL语句或PL / SQL块。 如果你一直在工作在PL / SQL块,你执行一个SQL语句,语句将取代PL / SQL块你已经编辑。

警告- - - - - - 不允许SQL * Plus缓冲区包含您只复制漫长的过程。 很容易进入一个SQL命令没有思考和消灭更长PL / SQL过程你发展。

这三种方法,你选择哪一个取决于你,并在一定程度上取决于你的个人喜好。 你可能会发现第一个方法,复制和粘贴在记事本和SQL * Plus,最有用的在这本书的前几章。 当你写作更大的PL / SQL函数和过程,你会发现自己会吸引每一个在它自己的文件。

编写你的第一个函数 也许你能做的最有用的事情之一用你的PL / SQL知识是使用它编写存储函数和存储过程。 早些时候你写的代码封装到一个函数允许您编译它存储一次并将其存储在数据库中,以供将来使用。 下次你想要运行的PL / SQL块,所有您需要做的是调用函数。 使用SQL * Plus,键入输入代码清单1.3所示,这将创建一个PL / SQL函数返回的值被清单1.2输出。

清单1.3 SS_THRESH 函数

CREATE OR REPLACE FUNCTION ss_thresh RETURN NUMBER AS x NUMBER; BEGIN x := 72600; RETURN x; END; /

Function created

比较清单1.3中的代码如清单1.2所示。 请注意,关键字 声明 一直在更换线路1和2的单词吗 创建或替换函数ss_thresh返回数量 。 这将是在第三天进一步解释。 还要注意,调用 dbms_output.put_line() 已经取代了吗 返回 命令(第6行),返回该变量的值 X 给调用者。 唯一的输出清单1.3是一个确认的功能已成功创建,第9行所示。

注意,甲骨文已经建立了功能。 SQL * Plus表明通过显示文字 函数创建 。

找到编译错误 你可能能够输入的代码清单1.3和创建 SS_THRESH 函数没有错误。 然而,这也许不是这样。 向您展示如何处理一个错误,如清单1.4包含相同的代码如清单1.3,但有一个小错误。

清单1.4 SS_THRESH 函数与一个错误

-- CREATE OR REPLACE FUNCTION ss_thresh RETURN NUMBER AS x NUMBER; BEGIN x = 72600; RETURN x; END; /

Warning: Function created with compilation errors.

与大多数编译器,这将显示一个错误的清单中找到源代码,Oracle存储在一个数据库表中发现的任何错误 USER_ERRORS 。 如果你想看具体细节,你可能,你需要自己检索错误清单。 使用SQL * Plus命令 显示错误 如清单1.5所示,这样做。

清单1.5 显示错误 命令

1: SHOW ERRORS Errors for FUNCTION SS_THRESH:

LINE/COL ERROR


5/5 PLS-00103: Encountered the symbol "=" when expecting one of the following: := . ( @ % ; The symbol ":= was inserted before "=" to continue.

如您所见,清单有两列错误的输出。 第一列包含错误发生的行号和行中的字符位置。 第二列包含特定的错误消息。 在本例中,错误发生在第5行第五个字符位置。 错误消息告诉你,甲骨文公司遇到了一个等号当真是期待别的东西。 “别的东西”,在这种情况下,是赋值运算符,代表 := 。

图1.4显示了SQL * Plus屏幕之后,它会执行清单1.4和1.5。

图1.4

错误清单 SS_THRESH 。

提示, 打字 = 而不是 := 是一种常见的错误,特别是如果你还计划在其他语言中,使用吗 = 赋值。

显示函数的返回值 现在您已经编写和编译的函数,它的时间来执行,看看结果。 最简单的方法是使用SQL * Plus发出以下SQL命令:

SELECT SS_THRESH FROM DUAL; SS_THRESH

72600

的 SS_THRESH 函数没有参数,所以一定不要添加任何括号当你调用它。 换句话说,不要使用 SS_THRESH() 因为甲骨文将返回一个错误。 表 双 是一种特殊的Oracle表总是存在,总是只有一行,总是一列。 这是完美的表时使用试验功能。 选择的功能 双 表使函数结果显示。

这甚至可以简单的函数是有用的吗? 的 SS_THRESH 函数是一个非常简单的函数,你可能确实不知道如此荒谬的东西简单可能是有用的。 这个函数返回值是社保贡献和利益基础,从每年的值变化。 如果你是一个程序员在一个工资管理系统,需要编写一些查询使用这个值,您可以使用这样的一个函数 封装 这个信息。 封装信息手段嵌入到一个函数中,这样的价值观不需要复制整个代码,因此,可以在一个中心位置的任何更改。 这种方法的另一个好处。 您的查询变得更具可读性。 这有点容易记住六个月后你就意味着当你看到什么

比如果你只是硬编码的值

SELECT * FROM employee_table WHERE emp_salary > 72600; 执行PL / SQL Builder使用开发人员2000年的过程 程序生成器是甲骨文的开发商2000开发环境的一部分。 它允许您开发和调试PL / SQL程序单位使用在2000年开发的应用程序。 2000年与开发人员,在客户端使用PL / SQL程序背后的行为形式,报告,以及菜单,你发展。 你最终得到的PL / SQL引擎在客户端以及服务器上。 一个漂亮的好处是,程序生成器可以用来执行PL / SQL代码而不需要被连接到一个数据库。

注意: 的许多高级功能稍后讨论这本书只能在执行PL / SQL代码在数据库中。

开始程序生成器 如果你安装了开发人员2000,你开始程序生成器通过选择开始,计划,开发人员2000 R2.0过程构建器。 打开屏幕如图1.5所示,分为三个部分。

图1.5

开屏幕施工手续。

如你所见,程序构建器窗口分为三个主要部分。 对象导航窗口允许您浏览各种程序单元,PL / SQL库,你可以访问数据库对象。 显示的其他两个部分结合起来构成了PL / SQL解释器窗口。 前面板时使用调试PL / SQL代码,显示了正在调试代码。 底部窗格,您可以在其中键入并执行特别的PL / SQL块。

新学期, PL / SQL可以用来编写程序、函数、包体,包类型,和触发器。 这些结构被称为 项目单位。

使用交互式的PL / SQL PL / SQL解释器允许您输入PL / SQL匿名块和执行。 清单1.2中的小块,你输入前,就是这样一个匿名块。 你可以输入块到过程构建器并执行它,但是首先你需要做一个小变化。 清单1.2中所示的代码包含以下两个要求 DBMS_OUTPUT :

dbms_output.put_line('The variable X = '); dbms_output.put_line(x); DBMS_OUTPUT 是一个包,只存在于数据库服务器。 程序生成器将返回错误如果你试图执行的代码现在站。 幸运的是,类似于甲骨文一个包 DBMS_OUTPUT ,它可以用在当你执行代码在客户端。 包的名称 TEXT_IO ,它还包含一个入口点 PUT_LINE 。 代码如清单1.2所示,取代调用 dbms_output.put_line 与 TEXT_IO.PUT_LINE ,你的代码如清单1.6所示。 这段代码将从过程构建器。

清单1.6使用PL / SQL块 TEXT_IO 运行程序生成器 DECLARE x INTEGER; BEGIN x := 72600; text_io.put_line('The variable X = '); text_io.put_line(x); END; 现在,您可以把这段代码类型程序生成器的PL / SQL解释器。 解释器会自动执行块当你完成进入最后一行。 结果将看起来像下面的:

The variable X = 72600 程序生成器已专门使用PL / SQL编写的。 不像SQL * Plus,您不需要输入一个斜杠标记告诉程序构建器输入的PL / SQL块。

创建 SS_THRESH 函数 创建一个函数(或任何其他程序单元如一个过程或包)使用过程构建器不仅仅需要一些输入 创建函数 语句的翻译。 创建一个函数,你需要告诉程序生成器,你想创建一个新的程序单元。 为此,选择文件,新的程序单元菜单选项。 您将看到如图1.6所示的对话框。

图1.6

创建一个新程序单元。

该对话框包含单选按钮允许您选择要创建的类型的程序单元,还包含一个文本框的程序单元的名字。 选择函数,类型名称 SS_THRESH 文本框,并单击OK。 您将看到类似于图1.7中所示的屏幕。 图1.7

输入的代码 SS_THRESH 。

图1.7 显示代码已经编写的函数。 当然,程序生成器不写你的代码。 当程序构建器打开这个窗口,它在文本框骨架函数。 你必须填写详细信息。 当你得到你想要的代码进入方式,点击编译按钮来编译它,然后单击关闭按钮关闭窗口。

执行您刚刚创建的函数,输入以下语句为PL / SQL解释器:

TEXT_IO.PUT_LINE(SS_THRESH); 当你执行这个语句,程序生成器将执行功能和显示下面的结果:

72600 连接到一个数据库 除了创建PL / SQL程序单元在客户端,程序生成器还可以用来创建和执行项目单位在数据库中。 要做到这一点,首先需要连接到一个数据库。 使用文件,连接菜单选项来连接到数据库。 一旦你登录,您将能够浏览数据库项目单位使用对象导航器。 图1.8显示了项目单位所拥有的用户命名 杰夫 。

项目单位 杰夫 模式。

创建一个数据库中存储函数或其他程序单元,遵循这些步骤:

点击高亮 存储程序单位 条目下的用户的名字。

单击创建工具栏按钮。

进行时你会创建一个本地的程序单元。

除了要选择模式,创建PL / SQL函数的过程在数据库中创建一个本地的一样。

使用SQLPlus工作表 如果你有企业管理器可用,考虑使用SQLPlus这本书中的示例工作表。 SQLPlus工作表是完全兼容SQL * Plus,并且可以用于所有这本书中的示例。 SQL * Plus工作表的优势在SQL * Plus的接口。 而不是输入大量的一行代码,您可以使用一个文本editor-like接口。 在你得到你想要的代码进入的方式,您可以单击工具栏按钮来执行它。

使用SQLPlus工作表执行PL / SQL块 图1.9显示了SQLPlus工作表。

总结 在本章中你学到一点关于PL / SQL,它是什么,为什么使用它。 你知道PL / SQL是甲骨文的SQL过程语言扩展,而您可以使用它来编写过程和函数,在服务器上执行。

本章也解释了PL / SQL的关系、SQL和SQL * Plus。 这应该给你一个好的理解的Oracle PL / SQL如何适应更大的图片。

你写你的第一个PL / SQL存储功能,这将给你一个好的感觉和PL / SQL编程的技巧。

SQL * Plus是在本书中使用的工具的PL / SQL代码示例。 SQLPlus工作表和程序生成器是另外两个工具,也可以用来编写和执行PL / SQL代码。

问答可以看到,SQLPlus表屏幕分为两半。 上半部分是用于输入和编辑SQL语句和PL / SQL块。 下半部分用于显示输出。 执行工具栏按钮时,一个闪电,是用来执行的语句,你已进入上窗格。

有两种方法可以从文件使用SQLPlus工作表来执行命令。 一种方法是使用文件,打开菜单选项将文件的内容加载到上面的面板中,然后单击“闪电”按钮。 另一种方法是使用工作表,运行本地脚本菜单选项。

问& PL / SQL代码执行发生在哪里?

通常,执行发生在服务器级。 这本书中的例子,永远是这样。 一些甲骨文的产品,比如开发人员/ 2000,也有能力执行客户端机器上本地PL / SQL块。

我可以和PL / SQL编写一个完整的应用程序吗?

一般来说你不能,至少不像大多数人想象的应用程序。 对于一个终端用户的应用程序,您仍然需要一个工具,比如PowerBuilder或开发人员/ 2000,为了设计屏幕和生成报告。

我执行一些使用的PL / SQL代码 dbms_output.put_line() 打印一些数据,但是我没有看到任何东西。 如何来吗?

你可能忘了启用服务器输出选项。 使用这个SQL * Plus命令:

SET SERVEROUTPUT ON 如果你忘记了,你的PL / SQL输出去遗忘。

我用程序生成器,我得到错误当我尝试执行代码,其中包含调用 dbms_output.put_line() 。 为什么?

当你使用过程构建器来执行本地代码,您必须使用 TEXT_IO.PUT_LINE 而不是 dbms_output.put_line() 。 如果您使用的是程序生成器,您已经连接到一个数据库,您将能够执行调用 dbms_output.put_line() ,但你不会看到结果。

车间 使用以下车间测试你理解本章,把你所学的付诸实践。 你会发现测验和练习的答案在附录A,“答案。”

测验 什么叫SQL * Plus PL / SQL代码发送到Oracle数据库执行吗?

所有PL / SQL的基本依据是什么代码?

列表的一个优势推动程序逻辑服务器级别。

三个甲骨文的产品使用PL / SQL。

什么命令告诉SQL * Plus显示PL / SQL输出?

名字至少有两个选项来管理你的PL / SQL代码。

练习 如果你没有遇到任何错误在编译你的第一个功能,试着把一些目的。 然后尝试 显示错误 命令。

尝试每一章中提到的三种方式来管理您的源代码。 熟悉SQL * Plus 编辑 命令。 试着使用 @ 命令或 开始 命令来执行你的PL / SQL代码从一个文本文件。

版权©培生教育。 保留所有权利。

原文链接: http://www.developer.com/tech/article.php/777761/Day-1-Learning-the-Basics-of-PLSQL.htm

HTML
1
https://gitee.com/cncounter/translation.git
git@gitee.com:cncounter/translation.git
cncounter
translation
translation
master

搜索帮助