1 / 32

第 18 课 PL/SQL

第 18 课 PL/SQL. PL/SQL 的概念 BLOCK FUNCTION PROCEDURE. 教学目标. PL/SQL 是 Oracle 对 SQL 规范的扩展,是一种块结构语言 . 构成一个 PL/SQL 程序的基本单位(过程、函数和无名块)是逻辑块 . 可包含任何数目的嵌套子块。 PL/SQL 与一般结构化语言一样,有变量和常量 ,控制语句 ,循环语句等。 PL/SQL 与 sql 一样,不区分大小写。 看 :fun_proc.txt 中的各程序段。. PL/SQL 的概念. DECLARE --- 说明 BEGIN --- 语句序列

Download Presentation

第 18 课 PL/SQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第18课PL/SQL

  2. PL/SQL的概念 BLOCK FUNCTION PROCEDURE 教学目标

  3. PL/SQL是Oracle对SQL规范的扩展,是一种块结构语言 . 构成一个PL/SQL程序的基本单位(过程、函数和无名块)是逻辑块.可包含任何数目的嵌套子块。 PL/SQL与一般结构化语言一样,有变量和常量 ,控制语句 ,循环语句等。 PL/SQL与sql一样,不区分大小写。 看:fun_proc.txt中的各程序段。 PL/SQL的概念

  4. DECLARE ---说明 BEGIN ---语句序列 EXCEPTION ---例外处理程序 END; Block Structure

  5. Block Structure • DECLARE (optional) Define PL/SQL objects to be used within this block • BEGIN (强制) Executable statements • EXCEPTION (optional) What to do if the executable action causes an error condition • END; (强制)

  6. Development Environments • SQL*Plus 使用PL/SQL engine in the Oracle Server • Procedure Builder 使用the PL/SQL engine in the client tool or in the Oracle Server

  7. 第一个例子:fun_proc.txt DECLARE num_a NUMBER := 6; num_b NUMBER; BEGIN num_b := 0; num_a := num_a / num_b; num_b := 7; dbms_output.put_line(' Value of num_b ' || num_b); EXCEPTION WHEN ZERO_DIVIDE THEN dbms_output.put_line('Trying to divide by zero'); dbms_output.put_line(' Value of num_a ' || num_a); dbms_output.put_line(' Value of num_b ' || num_b); END;

  8. 注: dbms_output.put_line(…)是一个oracle内置包中的函数,可以在sqlplus中输出()内的值。 PL/SQL使用两种注释: 单行注释: --注释文字 多行注释:/*…….. …………………………*/ EXCAMPLE:fun_proc.txt中的匿名block whith comment PL/SQL的注释

  9. 支持SQL:几乎所有SQL可以在PL/SQL使用; 生产率高; 性能好; 可移植性 :在不同平台代码相同; 与ORACLE集成. PL/SQL的优点

  10. 可重用性:PL/SQL blocks can be named and stored in the Oracle server and reused as required in another PL/SQL program or from the SQL com-mand line. The small unit of code is more manageable and reusable. 安全性高:Security on PL/SQL structures stored in the server can be managed using the Oracle database objects syntax. You can grant and revoke privileges on these stored PL/SQL programs to and from other users in the database. PL/SQL的优点

  11. 减少网络压力: With SQL, Oracle must process each SQL statement one at a time. In a networked environment, this means that a separate call must be made to the Oracle server each time a SQL statement is issued, With PL/SQL, the entire block of statements is sent to the Oracle server at one time, reducing network traffic. PL/SQL的优点

  12. PL/SQL运行系统是一种技术,不是一种独立产品,PL/SQL运行系统是一种技术,不是一种独立产品, 它是PL/SQL块和子程序的一种解释器,它可接收任何有效的PL/SQL块或子程序。最终,变为SQL. PL/SQL机可执行过程性语句,将对应SQL语句发送到ORACLE服务器上的SQL语句执行器。 见图:plsql_Engine.pdf PLSQL的运行原理

  13. Developing Procedures and Functions Using SQL*Plus

  14. PL/SQL Program Constructs Stored procedure/function 匿名block DECLARE BEGIN Applicationprocedure/function Applicationtrigger EXCEPTION END; Databasetrigger Package Object type

  15. A PL/SQL block can be a named block or an anonymous(匿名) block. 前面的例子就是一个匿名 block.匿名blocks can be used in the server side(在ORACLE SERVER中) or client side(DEVELOPER2000系列). There are two types of named blocks:Function,Procedure PL/SQL

  16. 函数: Function Takes zero or more parameter values and returns one value 过程: Procedure Takes zero or more parameter values and may return value through parameters. PL/SQL

  17. FUNCTION name [(parameter [,parameter,…])] RETURN datatype IS //或AS [local declarations ] BEGIN executable statements [EXCEPTION exception handlers ] END [name ]; PL/SQL

  18. A function accepts zero or more input parameters and returns one value. Function通过其返回值,返回结果。 The datatype of the return value is defined when the function is created.注意:并不定义长度。 User-defined functions can be used in the same way as Oracle built-in single-row functions. EXCAMPLE:fun_proc.txt中的find_area PL/SQL

  19. PROCEDURE name [(parameter [,parameter,…])] IS //或AS [local declarations ] BEGIN executable statements [EXCEPTION exception handlers ] END [name ]; PL/SQL

  20. A procedure is a PL/SQL block that accepts zero or more parameters as input (IN), output (OUT), or both (INOUT). Unlike functions, procedures do not return a value; the INOUT parameter or OUT parameter may be used instead to pass a value from the procedure. PL/SQL

  21. Procedures cannot be used in SQL statements; 在SQLPLUS中用EXECUTE,CALL 语句调用 EXCAMPLE:fun_proc.txt中的get_area, my_first_proc 在PL/SQL block内直接调用: PL/SQL

  22. function 的参数可以使用out定义吗? create or replace function find_area (vlength in number,vwidth in number) return number…. create or replace function find_area (vlength in number,vwidth in number,varea out number ) return number….正确吗? EXAMPLE:fun_proc.txt PL/SQL

  23. 存储于数据库中 A function is created in the database using a CREATE OR REPLACE command. A procedure created in the database using a CREATE OR REPLACE command. 存储于数据库中的函数,过程是数据库对象。叫存储过程 EXAMPLE:fun_proc.txt PL/SQL

  24. PL/SQL blocks may be compiled separately and stored in the database,this is called a 存储过程. Function,procedure都是存储过程。 存储过程经编译和优化后存储在数据库服务器中,使用时只要调用即可 在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。 存储过程

  25. 练习: 建立一个求圆面积的函数 建立一个圆面积的过程,测试 存储过程

  26. Developing Stored Procedures Oracle Procedure Builder Edit Textfile Systemeditor 1 Store in database Sourcecode 2 Compile p-code Execute

  27. ORACLE 创建存储过程的语法为: create [or replace] procedure 过程名 ( 参数1 [in|out|in out] 数据类型 [,参数2 [in|out|in out] 数据类型]... ) {is|as} pl/sql 语句块 注意:没有declare,变量定义在is 之后 EXAMPLE: sm_procedure.txt 存储过程

  28. ORACLE 创建存储函数的语法为: create [or replace] FUNCTION name [(parameter [,parameter,…])] RETURN datatype IS/AS pl/sql 语句块 EXAMPLE: sm_procedure.txt 存储过程

  29. 练习: 建立一个log_user表,存username,log_time, 建立一个存储过程,记录当前用户,及时间 存储过程

  30. 存储过程有以下的优点: 存储过程的能力大大增强了SQL语言的功能和灵活 性。存储过程可以用流控制语句编写,有很强的灵 活性,可以完成复杂的判断和较复杂的运算。 可保证数据的安全性和完整性。 存储过程

  31. 在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。 由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。 可以降低网络的通信量。 存储过程

  32. PL/SQL的概念 BLOCK FUNCTION PROCEDURE 小结

More Related