`
slbszq
  • 浏览: 264443 次
  • 性别: 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).如何调用包的过程或是函数

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

 

 

分享到:
评论

相关推荐

    PLSQLDeveloper下载

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    5.2 基本PL/SQL编程结构 5.3 定义PL/SQL数据类型 5.3.1 有效字符集 5.3.2 算术操作符 5.3.3 varchar2类型 5.3.4 数字类型 5.3.5 日期类型 5.3.6 布尔类型 5.4 在SQL*Plus中编写PL/SQL程序, 5.4.1 PL/SQL程序中...

    21天学通Oracle

    8.3.3 调用程序包中的函数/存储过程 157 8.3.4 程序包中的变量 158 8.4 本章实例 159 8.5 本章小结 161 8.6 习题 161 …… 第9章 游标(教学视频:36分钟) 162 第10章 触发器(教学视频:58分钟) 178 第11...

    oracle实验报告

    实验3 Oracle数据库开发环境下PL/SQL编程 【实验目的】 (1)掌握 PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用 PL/SQL 解决实际问题 【实验内容与步骤】 PL/SQL块中的可执行部分...

    Oracle Database 11g初学者指南--详细书签版

    5.2 基本PL/SQL编程结构 123 5.3 定义PL/SQL数据类型 124 5.3.1 有效字符集 124 5.3.2 算术操作符 125 5.3.3 varchar 2类型 126 5.3.4 数字类型 127 5.3.5 日期类型 127 5.3.6 布尔类型 128 5.4 在SQL*Plus...

    Oracle 10g 开发与管理

    第七讲 PL/SQL编程基础 56 7.1 PL/SQL 程序结构 56 1.PL/SQL块结构 56 2.PL/SQL块的分类(按照特性划分) 56 7.2变量与常量 56 (一)PL/SQL标识符 (给变量命名) 56 (二)标量变量 56 1.PL/SQL标识符 56 2.变量...

    Oracle_Database_11g完全参考手册.part3/3

     构建和调整PL/SQL触发器、函数和程序包  使用Java、JDBC和XMIL开发数据库应用程序  使用Oracle实时应用群集(RAC)优化可用性和可扩展性 内容提要 《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle ...

    Oracle_Database_11g完全参考手册.part2/3

     构建和调整PL/SQL触发器、函数和程序包  使用Java、JDBC和XMIL开发数据库应用程序  使用Oracle实时应用群集(RAC)优化可用性和可扩展性 内容提要 《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle ...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    10.2.5 将子查询因子化应用到PL/SQL中 270 10.3 递归子查询 273 10.3.1 一个CONNECT BY的例子 274 10.3.2 使用RSF的例子 275 10.3.3 RSF的限制条件 276 10.3.4 与CONNECT BY的不同点 276 10.4 复制CONNECT BY...

    Direct Oracle Access v4.1.3 bcb6

    Oracle Package支持 ——Oracle数据库中的多数PL/SQL代码被编程为程序包。Direct Oracle Access提供了一个TOraclePackage组件,您可以方便的调用打包后的程序单元,而无需对这些程序单元和参数做细节说明。 Direct ...

    唐修PPASADAMOracle迁移上云.pdf

    云数据库PPAS - Oracle 存储过程、函数、触发器 云数据库PPAS - DBMS_、ALL_、DBA_、USER_ 云数据库PPAS 规格及存储容量 为何Oracle -> MySQL系列 迁移难以推动的原因 典型案例: 某人口管理应用(ADAM迁移)

    ADAM产品助力企业快速数据库和应用云化唐修.pdf

    云数据库PPAS - Oracle 存储过程、函数、触发器 云数据库PPAS - DBMS_、ALL_、DBA_、USER_ 云数据库PPAS 规格及存储容量 云数据库PPAS版,Oracle迁移上云首选 为何Oracle -> MySQL系列 迁移难以推动的原因 数据库迁...

    Visual C++ 2005入门经典--源代码及课后练习答案

    Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。Ivor Horton还著有Beginning Visual C++ 6、Beginning C ...

    VC与Labview、Matlab编程论文资料[2].rar

    VC_SQLServer和Matlab混合编程管理仿真数据.pdf VC_下MSComm控件的串口通信方法.pdf VC_与Matlab混合编程技术应用分析.pdf VC_与MATLAB混合编程的实现方法.pdf VC_与MATLAB混合编程研究及开发实例.pdf VC_与OpenGL...

    asp.net知识库

    Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的一些基础知识 在组件之间实现事务和异步...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    第三章 Sql查询与函数 一、 SQL概述 SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。  SQL...

    VC与Labview、Matlab编程论文资料

    VC_SQLServer和Matlab混合编程管理仿真数据.pdf VC_下MSComm控件的串口通信方法.pdf VC_与Matlab混合编程技术应用分析.pdf VC_与MATLAB混合编程的实现方法.pdf VC_与MATLAB混合编程研究及开发实例.pdf VC_与OpenGL...

    VC与Labview、Matlab编程论文资料[4].rar

    VC_SQLServer和Matlab混合编程管理仿真数据.pdf VC_下MSComm控件的串口通信方法.pdf VC_与Matlab混合编程技术应用分析.pdf VC_与MATLAB混合编程的实现方法.pdf VC_与MATLAB混合编程研究及开发实例.pdf VC_与OpenGL...

Global site tag (gtag.js) - Google Analytics