`
afunti
  • 浏览: 105462 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

plsql(3)--过程(procedure)和函数(function)

 
阅读更多

 

过程(procedure)和函数(function)

     过程和函数都以编译后的形式存放在数据库中,函数可以没有参数也可以有多个参数并有一个返回值。过程有零个或多个参数,没有返回值。函数和过程都可以通过参数列表接收或返回零个或多个值,函数和过程的主要区别不在于返回值,而在于他们的调用方式。过程是作为一个独立执行语句调用的: 

创建过程的语法如下: 

CREATE[ OR REPLACE] PROCEDURE [schema.] procedure_name

   [arg1[in | out | in out] ........

{AS|IS} 

    declaration_section 

BEGIN 

    executable_section

 [ EXCEPTION 

   exception_section 

END [procedure_name] 

 

IN     表示在调用过程的时候,实际参数的取值被传递给该过程,形式参数被认为是只读的,当过程结束时,控制会返回控制环境,实际参数的值不会改变。 

OUT    在调用过程时实际参数的取值都将被忽略,在过程内部形式参数只能是被赋值,而不能从中读取数据,在过程结束后形式参数的内容将被赋予实际参数。

 IN OUT  这种模式是INOUT的组合;在过程内部实际参数的值会传递给形式参数,形势参数的值可读也可写,过程结束后,形势参数的值将赋予实际参数

eg:

 

CREATE OR REPLACE PROCEDURE pro_hello(

p_name  OUT s_emp.first_name%TYPE, 

p_id IN s_emp.id%TYPE := 1)

AS

  v_fname s_emp.first_name%TYPE;

BEGIN

  --p_id := 10;

 

  SELECT first_name

    INTO p_name

    FROM s_emp

   WHERE id = p_id;

 

  DBMS_OUTPUT.PUT_LINE('p_name: ' || p_name);

 

  --p_name := v_fname;

 

  --DBMS_OUTPUT.PUT_LINE('hello, ' || v_fname);

END;


 

 

 

 

函数:

CREATE [ OR REPLACE] FINCTION [schema.]function_name 

[parameter_list] 

RETURN returning_datatype

 {AS|IS} 

   declaration_section 

BEGIN 

   executable_section 

[ EXCEPTION] 

exception_section ] 

END [procedure_name] 

在执行部分函数必须有个或多个return语句。 

 

在创建函数中可以调用单行函数和组函数,例如: 

CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)

 RETURN NUMBER 

IS 

pi NUMBER=ACOS(-1);

 RadiansPerDegree NUMBER; 

BEGIN 

 RadiansPerDegree=pi/180; 

RETURN(SIN(DegreesIn*RadiansPerDegree)); 

END 

eg:

 

 

CREATE OR REPLACE FUNCTION fun_getSalary(

p_id s_emp.id%TYPE,

p_mon NUMBER)

RETURN s_emp.salary%TYPE IS

  v_base s_emp.salary%TYPE;

  v_pct s_emp.commission_pct%TYPE;

  v_saleAmt s_ord.total%TYPE;

  v_sal s_emp.salary%TYPE;

BEGIN

  SELECT salary, commission_pct

    INTO v_base, v_pct

    FROM s_emp

   WHERE id = p_id;

 

  IF v_pct IS NULL THEN

    RETURN v_base;

  END IF;

 

  SELECT SUM(total)

    INTO v_saleAmt

    FROM s_ord

   WHERE sales_rep_id = p_id

     AND to_number(to_char(date_ordered,'mm')) = p_mon;

 

  IF v_saleAmt IS NULL THEN

    RETURN v_base;

  END IF;

 

  v_sal := v_base + v_saleAmt * (v_pct/100);

 

 

  RETURN v_sal;

END;

 


 

 

 

 

  • 大小: 89.3 KB
分享到:
评论

相关推荐

    plsql---语法

    - 子程序:函数(FUNCTION)和过程(PROCEDURE),用于封装代码逻辑。 - 异常处理:通过`EXCEPTION`关键字定义异常处理逻辑,例如`WHEN OTHERS THEN`可以捕获所有未明确处理的异常。 2. PL/SQL常用算法: - 排序...

    练习利用PLSQL Developer编写和管理存储过程、存储函数和触发器等

    PLSQL Developer中存储过程、存储函数和触发器的编写和管理 PLSQL Developer是一种功能强大的Oracle数据库开发工具,提供了许多功能来帮助开发者快速编写和管理存储过程、存储函数和触发器等高级数据库对象。本文将...

    PLSQL中文详细使用教程 有标签可快速定位

    3. 子程序:PLSQL支持过程(PROCEDURE)和函数(FUNCTION)的定义,可以封装代码逻辑,提高代码复用性。 二、PLSQL的块结构 PLSQL代码以块的形式存在,包括声明部分、执行部分和异常处理部分。基本块结构如下: `...

    Oracle数据库实验-PLSQL游标、过程、函数、包的使用[文].pdf

    实验中没有给出创建过程和函数的具体例子,但通常我们会用CREATE PROCEDURE或CREATE FUNCTION语句定义它们。 最后,包是将相关的过程、函数和其他数据库对象组合在一起的一种方式,有助于组织代码并提供封装。包...

    PLSQL-5.1.1

    - 它支持变量、常量、条件语句(IF-THEN-ELSE)、循环(FOR, WHILE)、子程序(PROCEDURE, FUNCTION)以及异常处理。 - PLSQL允许创建存储过程、触发器、游标,这些是数据库中的可重用代码块,能提高性能并减少...

    PLSQL精讲、自己学习过程中收藏的!

    2. **执行部分**:这是PLSQL块的主要部分,包含了各种SQL语句和过程式控制结构,如循环、条件语句等。例如: ```sql BEGIN FOR i IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(i); END LOOP; END; ``` 3. **异常处理...

    ORACLE_PlSql-甲骨文学习笔记

    存储过程是在数据库中存储的一组预编译的 SQL 语句和 PL/SQL 块。 ```plsql CREATE OR REPLACE PROCEDURE update_salary(p_employee_id NUMBER, p_new_salary NUMBER) IS BEGIN UPDATE employees SET salary = p_...

    PLSQL 操作学习文档

    PLSQL(Procedural Language/Structured Query Language)是Oracle数据库中的一个强大工具,它结合了SQL的查询功能和过程性编程语言的特点,使得数据库管理、数据处理和应用程序开发更为便捷。"PLSQL Developer"是一...

    [应用开发及迁移][服务器编程]PLSQL-SQL过程语言.pdf

    - 用于从过程或函数中返回值。 **7. 顺序控制语句** - 如GOTO语句,用于跳转到指定位置继续执行。 #### 五、存储过程模块 **1. 支持的参数** - 存储过程可以接受各种类型的参数,包括数值型、字符型等。 **2. ...

    ORACLR plsql引导学习

    - 过程和函数是可重用的代码模块,过程不返回值,而函数返回一个值。 - 示例: ```plsql -- 过程 CREATE OR REPLACE PROCEDURE my_procedure (p_param IN NUMBER) IS BEGIN -- 执行代码 END my_procedure; ...

    plsql的存储过程

    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一种编程语言,它结合了SQL的查询功能和过程式编程语言的控制结构。在PL/SQL中,存储过程是一种预编译的代码单元,可以包含SQL语句、...

    Oracle PL SQL存储过程以及函数编

    Oracle PL/SQL是Oracle数据库系统中的一个强大工具,它结合了SQL的数据操作能力和...对于初学者,可以参考《Oracle PLSQL存储过程以及函数编写.pdf》和《本地规范实例详解.pdf》等资料,结合实际练习来巩固理论知识。

    PLSQL.rar_plsql

    PLSQL的主要组件包括块(Block)、表单(Form)、触发器(Trigger)、存储过程(Stored Procedure)、函数(Function)和包(Package)。块是PLSQL的基本结构,由BEGIN、END关键字包围,可以包含声明、执行和异常...

    PLSQL数据库教程

    - CREATE FUNCTION和CREATE PROCEDURE用于创建自定义函数和过程。 - RETURN语句在函数中用于返回值。 - 使用EXECUTE语句调用已定义的函数或过程。 5. **触发器**: - 触发器是一种在特定数据库事件(如INSERT、...

    PLSQL编程学习资料

    例如,实例2和实例3展示了如何定义一个简单的PLSQL块,包括变量声明、查询和异常处理。 2. **变量声明**: 变量在PLSQL中使用`DECLARE`关键字进行声明,如`v_ename VARCHAR2(5)`和`v_sal emp.sal%TYPE`。`emp.sal%...

    PLSQL 个人自学总结

    此外,还有BEGIN-END块用于封装代码,PROCEDURE和FUNCTION用于创建自定义函数和过程。 5. 游标和PLSQL记录: 游标是PLSQL处理查询结果的关键工具,允许我们逐行处理查询结果。PLSQL记录则是一种自定义的数据结构,...

    oracle函数调用存储过程

    在Oracle数据库中,**存储过程**是一组预编译的SQL语句和过程式PL/SQL代码块,存储在数据库服务器上,并作为一个单元执行。它能够接收输入参数、执行复杂的业务逻辑,并且可以返回多个输出值或影响数据库状态。 **...

    PLSQL用户指南

    函数和过程是PLSQL中的重要概念,它们可以封装复杂的操作并重复使用。函数返回一个值,而过程不返回值,但两者都可以接受参数并有局部变量。例如: ```sql CREATE OR REPLACE FUNCTION add_numbers(a NUMBER, b ...

    plsql基本语法ppt

    包是将相关的变量、常量、过程和函数组合在一起的逻辑单元,可以提高代码的组织性和复用性。例如: ```sql CREATE OR REPLACE PACKAGE pkg_name AS -- 定义常量和变量 CONSTANT const_value CONSTANT_TYPE := ...

Global site tag (gtag.js) - Google Analytics