`
slbszq
  • 浏览: 267831 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

pl/sql编程——过程、函数、包

阅读更多

 

pl/sql编程——过程、函数、包

 

1.注释

单行注释 --

select * from emp where empno=7788; --取得员工信息

多行注释 /*...*/来划分

 

2.标志符号的命名规范

1).当定义变量时,建议用v_作为前缀v_sal

2).当定义常量时,建议用c_作为前缀c_rate

3).当定义游标时,建议用_cursor作为后缀emp_cursor

4).当定义例外时,建议用e_作为前缀e_error

 

3.块结构示意图

pl/sql块由三个部分构成:定义部分执行部分例外处理部分。

如下所示:

declare

/*定义部分——定义常量、变量、游标、例外、复杂数据类型*/

begin

/*执行部分——要执行的pl/sql语句和sql语句*/

exception

/*例外处理部分——处理运行的各种错误*/

end;

定义部分是从declare开始的,该部分是可选的;

执行部分是从begin开始的,该部分是必须的,至少要写null,不能不写;

例外处理部分是从exception开始的,该部分是可选的。

 

& 表示要接收从控制台输入的变量。

 

4. 过程

过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。在sqlplus中可以使用create procedure命令来建立过程。

 

5. JAVA中调用存储过程

 

CallableStatement cs = con.prepareCall("{call emp_pro(?,?)}");
//4.给?赋值
cs.setString(1,"SMITH");
cs.setInt(2,10);
//5.执行
cs.execute();

 

6. 函数

函数用于返回特定的数据,当建立函数时,在函数头部必须包含return子句。而在函数体内必须包含return语句返回的数据。我们可以使用create function来建立函数,实际案例:

--编写函数 返回指定人员的年薪
create function annual_income(name varchar2)
return number is
annual_salary number(7, 2);
begin
  select sal*12 + nvl(comm, 0) into annual_salary from emp where ename = name;
  return annual_salary;
end;

  

sqlplus中调用函数

SQL> var income number
SQL> call annual_incomec('scott') into :income; --注意:和income之间不能有空白
SQL> print income

 

同样我们可以在java程序中调用该函数 select annual_income('SCOTT') from dual;

 

7.

包用于在逻辑上组合过程和函数,它由包规范包体两部分组成。

1).我们可以使用create package命令来创建包。

--使用create package命令创建包
create package pkg_sal is
  procedure update_sal(name varchar2, new_sal number);
  function annual_income(name varchar2) return number;
end;

 

包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码。包体用于实现包规范中的过程和函数

2).建立包体可以使用create package body命令

--使用create package body创建包体
create or replace package body pkg_sal is
  procedure update_sal(name varchar2, new_sal number) is
    begin
      update emp set sal = new_sal where ename = name;
    end;
  function annual_income(name varchar2) return number is
    income number(7, 2);
    begin
      select sal*12 + nvl(comm, 0) into income from emp where ename = name;
      return income;
    end;
end;

 

3).如何调用包的过程或是函数

当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。

 

 

分享到:
评论

相关推荐

    PL/SQL手册———oracle10g

    包是一种组织PL/SQL对象的方式,它可以将类型、过程、函数等封装在一起,方便管理和重用。 - **包规范**:声明包中的公共接口。 - **包体**:实现包规范中声明的对象。 #### 实战案例 假设我们需要编写一个PL/SQL块...

    oracle实验三PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库管理系统中的重要组成部分,它是一种过程化语言,允许开发者编写复杂的数据库应用程序。在本次实验中,我们将重点学习PL/SQL的基本语法、控制结构、复合数据类型以及异常处理技术。 ...

    精通Oracle 10g PL/SQL编程

    《精通Oracle 10g PL/SQL编程》是中国水利水电出版社出版的一本专为数据库管理员、软件开发者和系统架构师量身打造的书籍,由王海亮、林立新等专家共同编著。这本书深入浅出地介绍了Oracle数据库中最重要的编程语言...

    精通Oracle10g PL/SQL编程.pdf

    Oracle 10g PL/SQL编程是数据库管理与开发领域中的一个重要主题,它涉及了如何在Oracle数据库环境中高效地编写过程化SQL语句。Oracle的PL/SQL是一种强大的编程语言,它结合了SQL的查询能力与传统的编程语言特性,...

    Oracle8 PL/SQL程序设计

    Oracle 8 PL/SQL程序设计是一门深度探讨Oracle数据库中PL/SQL编程语言的应用技术的主题。PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一种过程化编程语言,它结合了SQL的查询...

    Oracle PL/SQL Training

    第二天的课程则进一步深入到错误处理、过程和函数、PL/SQL包的使用、触发器、事务管理、调试、SQL调优,甚至可选的JAVA集成。这些内容旨在让你掌握更高级的PL/SQL技巧,如异常处理、模块化编程和性能优化。 学习PL/...

    英文版Oracle PL/SQL Packages and Types Reference

    PL/SQL包(Packages)是将相关的过程、函数、变量和类型组织在一起的结构,这种封装方式提高了代码的重用性和模块化,使得代码管理更加有序。 1. **包的概念**:包由两个部分组成——声明部分和执行部分。声明部分...

    PL/SQL Quiz

    标题“PL/SQL Quiz”指的是一个关于PL/SQL编程语言的练习或测试,可能是为了帮助学习者提升在数据库管理和编程方面的能力。PL/SQL是Oracle数据库系统中的过程化语言,结合了SQL查询语言和传统的编程元素,常用于开发...

    PL/SQL袖珍手册第4版

    2. **PL/SQL块**:了解PL/SQL程序的基本组成单元——匿名块和命名块(存储过程、函数、包),以及如何编写、调试和执行这些块。 3. **游标**:理解游标的概念,如何在PL/SQL中声明、打开、提取数据和关闭游标,以及...

    PL/SQL 用户指南与参考

    - 结合了SQL的数据操作能力和过程化编程语言的控制能力。 - 支持声明变量、定义函数和过程。 - 可以捕获并处理运行时错误。 #### 第二章 PL/SQL基础 - **块结构**: - PL/SQL采用块结构,每个块可以包含多个子...

    pl/sql 1001原版

    PL/SQL是Oracle数据库系统中的一个核心组件,全称为Procedural Language/SQL,它将SQL(结构化查询语言)与过程式编程语言相结合,为数据库开发者和管理员提供了强大的数据处理和管理能力。"PL/SQL 1001原版"可能是...

    PL/SQL文本文档

    PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL(结构化查询语言)与过程式编程语言相结合,为数据库管理提供了强大的编程能力。以下是对PL/SQL的一些核心知识点...

    PL_SQL_Developer 中英文

    不过需要注意的是,MySQL 使用的是自己的存储过程语言——MySQL 存储过程语言,而非 PL/SQL。因此,在使用 PL/SQL Developer 连接 MySQL 时,需要使用特定的连接插件,并且可能无法充分利用 PL/SQL Developer 的全部...

    关于pl/sql的好资料

    - **定义**: 包是用来组织PL/SQL类型、过程、函数和异常等的容器。 - **结构**: 包由规范(SPECIFICATION)和主体(BODY)两部分组成。 - **作用**: 提高代码的复用性和维护性。 #### 10. 触发器 - **定义**: ...

    Introduction to Oracle SQL and PL/SQL

    《Introduction to Oracle SQL and PL/SQL》是一本专为初学者设计的教程,全面涵盖了Oracle数据库管理系统中的核心语言——SQL(结构化查询语言)和PL/SQL(过程化语言/SQL)。这本书分为两卷,旨在帮助读者从基础到...

    Oracle.Database.10g.Pl_Sql.Programming.pdf

    2. **PL/SQL块**:讲解了PL/SQL的三种块类型——匿名块、存储过程和函数,以及它们在数据库管理中的应用。 3. **游标**:详述了如何使用游标进行数据检索和操作,以及游标在循环和动态SQL中的作用。 4. **异常处理...

    数据结构课后题解答(C语言描述)

    1. **基本操作实现**:包括数据元素的插入、删除、查找等操作,这需要理解每个数据结构的内部工作原理,并能用C语言编写相应的函数。 2. **算法分析**:涉及时间复杂度和空间复杂度的计算,理解算法效率的重要性,...

    精通Oracle 10g Pl SQL编程.[it270.com].pdf

    标题与描述明确指出了本文档的主题——“精通Oracle 10g Pl/SQL编程”。Oracle 10g是Oracle公司于2004年发布的一个数据库管理系统版本,而Pl/SQL(Procedural Language for SQL)则是Oracle数据库内置的一种过程化...

    精通Oracle.10g.Pl.SQL编程.pdf

    ### 精通Oracle 10g PL/SQL编程知识点概览 #### 一、PL/SQL编程基础 - **PL/SQL概述**:PL/SQL(程序化SQL)是Oracle数据库的一种内置过程语言,它扩展了标准SQL的功能,允许在SQL语句之间嵌入流程控制语句,支持...

Global site tag (gtag.js) - Google Analytics