`
equals
  • 浏览: 11538 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

PL/SQL函数和过程

阅读更多
匿名PL/SQL函数块
--每次使用进行编译,不存储进数据库,不能在其他PL/SQL块中调用;

过程、函数、包和触发器
--带名块,存储在数据库中,能在其他块中调用;
函数有返回值,存储过程不需要返回值

存储过程
CREATE OR REPLACE PROCEDURE /*创建或者更新*/ first_pro/*(可以加参数列表如: num [ IN | OUT | IN OUT ] NUMBER)*/  
IS
  v_now_date date;
BEGIN
  v_now_date:=SYSDATE;
  DBMS_OUTPUT.PUT_LINE(v_now_date);
END first_pro;--名字可加可不加

execute first_pro();--执行过程或函数

create or replace procedure secound_pro
is
  v_empno emp.empno%type:=9527;
  v_ename emp.ename%type:='chen';
  v_job emp.job%type:='programer';
  v_mgr emp.mgr%type:=08;
  v_hiredate emp.hiredate%type:=to_date('2014-4-28','yyyy-MM-dd');
  v_sal emp.sal%type:=3800;
  v_comm emp.comm%type:=1000;
  v_deptno emp.deptno%type:=8;
begin
  insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno)values(v_empno,v_ename,v_job,v_mgr,v_hiredate,v_sal,v_comm,v_deptno);
end secound_pro;

execute secound_pro();

create or replace procedure three_pro(no in emp.empno%type)
is
begin
update emp set sal=1900 where empno=no;
end three_pro;

execute three_pro(9527);

DROP PROCEDURE first_pro;--删除存储过程

函数
CREATE OR REPLACE FUNCTION  first_fn/*(可以加参数列表如: num [ IN | OUT | IN OUT ] NUMBER)*/
--函数中尽量避免使用out和 in out参数模式
RETURN NUMBER --返回值类型
IS
v_sal emp.sal%TYPE;
BEGIN
select sal into v_sal from emp where ename='chen';
RETURN v_sal;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('no data!');
RETURN null;
END first_fn;

--调用函数:函数具有返回值,所以函数不同于存储过程可以成为一条独立的语句,函数则是作为表达式的一部分存在
select first_fn sal from dual;
--或者
VAR salary NUMBER;
EXEC :salary:=first_fn;
PRINT salary;
--或者在DBMS_OUTPUT.PUT_LINE中打印
EXEC DBMS_OUTPUT.PUT_LINE('salary is '||first_fn);
--删除函数
DROP FUNCTION first_fn;


--创建包
create or replace package first_package
is
v_num number:=0;--定义全局变量、常量、游标、异常和数据类型
function package_fn return number;--定义公共的存储过程或者函数子程序,在包体中定义其具体代码
end first_package;
--定义包体
create or replace package body first_package
is
  function package_fn return number is
  v_sal emp.sal%type;
  begin
    select max(sal) into v_sal from emp;
    return v_sal;
  end package_fn;
end first_package;
--包的调用执行
execute DBMS_OUTPUT.PUT_LINE('num in package is '||first_package.v_num);
execute DBMS_OUTPUT.PUT_LINE('max salary is '||first_package.package_fn);
--删除包和包体
drop package first_package;
drop package body first_package;

包中存在重载,规则和java中的重载规则类似
分享到:
评论

相关推荐

    一个对数据库的操作工具PL/SQLpl/sqL工具

    6. **子程序**:PL/SQL支持函数和过程的定义,这些子程序可以在多个地方重复使用,降低了代码的冗余。 7. **包(Packages)**:包是将相关的类型、变量、常量、过程和函数组合在一起的命名实体,便于管理和重用。 ...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    Oracle PL/SQL实战(待续)

    此外,PL/SQL的包(PACKAGE)概念是将相关的过程和函数封装在一起,提供更好的模块化和重用性。包由包规范(PACKAGE HEADER)和包体(PACKAGE BODY)组成,前者声明公共接口,后者实现具体逻辑。通过包,我们可以...

    pl/sql developer11.0

    PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,专为编写、调试、测试和管理PL/SQL代码而设计。标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们...

    PL/SQL 基本知识

    例如,在`jbpm.sql`文件中,可能包含了与业务流程管理(BPM)相关的PL/SQL存储过程或函数,用于定义和执行工作流任务。 此外,PL/SQL还支持块的概念,如匿名块,这使得在不创建独立的存储过程或函数的情况下,也能...

    pl/sql64位

    PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...

    oracle 9i pl/sql程序设计笔记

    ### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...

    Web pl/sql报表制作过程

    - 在系统管理员的应用功能设置中,创建一个新的功能,关联之前注册的PL/SQL程序包,并设置相应的属性,如功能名称、用户功能名称、类型(SSWA PLSQL 函数)、支持维护模式(无)和上下文(责任)。 5. **注册菜单*...

    ORACLE PL/SQL从入门到精通

    PL/SQL软件包是一组相关的过程和函数的集合,它可以用来组织和管理程序。软件包由两部分组成,说明部分和包体部分,分别用于声明公共接口和实现逻辑。 异常处理在PL/SQL中用来处理程序运行时发生的错误。PL/SQL预定...

    oracle pl/sql从入门到精通 配套源代码

    2. **存储过程和函数**:这些是PL/SQL的核心组成部分,它们封装了一系列操作,可以被多次调用,提高代码复用性。书中可能包含各种示例,如自定义计算函数、处理业务逻辑的存储过程等。 3. **触发器**:当数据库中的...

    常用的PL/SQL函数

    ### 常用的PL/SQL函数 #### 引言 在Oracle数据库中,PL/SQL(Procedural Language for SQL)是一种强大的编程语言,它允许开发者编写过程化的SQL代码来处理复杂的数据操作任务。本文将详细介绍Oracle数据库中常用的...

    PL/SQL 的函数与存储过程练习

    PL/SQL 的函数与存储过程练习 PL/SQL 的函数与存储过程练习

    pl/sql 免安装,绿色版pl/sql

    2. **数据库对象管理**:该工具允许用户直接在界面中创建、修改和删除数据库中的表、视图、索引、存储过程、函数、触发器等。这些操作都配有直观的向导,使得数据库管理工作变得简单易行。 3. **调试功能**:PL/SQL...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL查询的基础上添加控制流语句、变量定义、错误处理等特性。 - **环境搭建与配置**:...

    PL/SQL下载

    2. **函数和过程**:掌握如何定义和调用自定义函数和过程。 3. **游标**:了解如何使用游标处理结果集。 4. **异常处理**:学习如何编写健壮的异常处理代码。 5. **存储过程和触发器**:学习如何创建和使用存储过程...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种...书中可能包含各种类型的PL/SQL程序设计技巧,从简单的存储过程和函数到复杂的事务处理和并发控制策略。通过实例学习,你将能够更好地理解和运用这些概念,提升你在Oracle数据库开发中的技能。

    Oracle Database 12c PL/SQL开发指南 实例源代码

    2. **函数与过程**:如何定义和调用用户自定义的函数和过程,理解输入参数、输出参数、IN OUT参数的区别和使用。 3. **游标**:在PL/SQL中如何使用游标处理单行或多行数据,以及游标的声明、打开、关闭和循环遍历。...

    PL/SQL开发文档1

    3. PL/SQL程序单元包括过程(Procedures)、函数(Functions)、包(Packages)、触发器(Triggers)等。文档中特别提到了“创建过程”的过程和方法,例如使用SQL的CREATE OR REPLACE语句。 4. PL/SQL结构命名惯例...

    PL/SQL编程基础知识

    PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库的核心组成部分之一,PL/SQL在数据库应用程序开发...

Global site tag (gtag.js) - Google Analytics