oracle中的function 、procedure、packages、package bodies比较

1  function和procedure的区别

1).可以理解函数是存储过程的一种 2).函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3).函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程 4).在sql数据操纵语句中只能调用函数而不能调用存储过程, 5).function必须有返回值,并且只能有一个返回值; 6).procedur不叫返回值,叫带出,可以带出多个值; 7).packages、package、bodies是同时存在的,packages可包括function,procedure 8).procedure和function可以单独存在,也可以放到bodies中.

2  packages、与packagebodies比较

定义:packae是一种将过程、函数和数据结构捆绑在一起的容器;           由两个部分组成:外部可视包规范,包括函数头,过程头,和外部可视数据结构;           另一部分是包主体(package body),包主体包含了所有被捆绑的过程和函数的声明、执行、异常处理部分。       简单说就是packages中只有各个方法的定义,bodies中涉及具体的实现.       所以 packages和packagebodies是一体的,必须同时存在.如果要外部调用的,就在package里声明一下,包内调用的,只要在body里写就行了。       package可包括function,procedure.       需要先创建package(也就是包的定义),再创建body。       增加包中的过程或者修改包中过程的输入参数个数等也是要先改package再改body

3  package的作用

可以简化应用设计、提高应用性能、实现信息隐藏、子程序重载

时间: 2024-10-04 10:01:36

oracle中的function 、procedure、packages、package bodies比较的相关文章

Oracle中function和procedure的区别

Oracle中function和procedure的区别: 1). 可以理解函数是存储过程的一种 2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程 4). 在sql数据操纵语句中只能调用函数而不能调用存储过程 原文地址:https://www.cnblogs.com/Xbingbing/p/8870575.html

【数据库】Function&Procedure&Package

Function/Procedure都是可独立编译并存储在数据库中的,区别是Function有返回值. Package则是数据和过程.函数的集合体. CREATE PROCEDURE dorepeat(p1 INT) BEGIN SET @x = 0; REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT; END; mysql> delimiter // mysql> CREATE PROCEDURE dorepeat(p1 INT) -&g

在Oracle/SQL Service中通过Function返回Table

本函数用途:返回一个Table 在Oracle中实现,范例: 1 --在Types中: 2 create or replace type objTable as object 3 ( 4 s_usercode varchar2(32767), 5 s_username varchar2(32767) 6 ); 7 8 CREATE OR REPLACE TYPE tabTemp AS TABLE OF objtable; 9 10 11 --在Function中: 12 --使用Pipeline

用sql语句导出oracle中的存储过程和函数

用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' replace SELECT CASE WHEN LINE = 1 THEN 'CREATE OR REPLACE ' || TEXT WHEN LINE = MAX_LINE THEN TEXT || CHR(10 ) || '/' ELSE TEXT END FROM USER_SOURCE A LEF

Oracle 中PLSQL的ftp应用

CREATE OR REPLACE PACKAGE BODY ftp AS -- -------------------------------------------------------------------------- -- Name : http://www.oracle-base.com/dba/miscellaneous/ftp.pkb -- Author : Tim Hall -- Description : Basic FTP API. For usage notes se

Oracle中组合索引的使用详解(转)

在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引.在组合索引的使用方面,Oracle有以下特点: 1. 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引: 2. 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径(请见下面的测试1和

oracle中的创建过程,函数,包

一.创建存储过程 存储过程是在oracle中存取完成特定业务逻辑的代码块.存储过程是命名块,匿名块不存在数据库中,命名块会存储到数据库中,匿名块每次运行都需要提前编译,命名块一次存储,只会编译一次.命名块可以多次使用. 创建存储过程的语法: create [or replace] procedure 存储过程的名称(参数名[in/out/inout] 参数类型,参数名...)] is/as 变量声明部分 begin 业务逻辑处理部分 exception 异常处理部分 end; 注意: 1.存储过

java实现调用ORACLE中的游标和包

今天把oracle中的包和游标学习了下,不废话,网上的的有些代码是错误的,抄来抄去,就自己实践了下,做个记录.直接上图,上代码 通过plsql创建自己的的包,包分为包头和包体. 1.包头如下: 1 CREATE OR REPLACE PACKAGE JAVALINKTEST 2 IS 3 TYPE CURSOR_TYPE IS REF CURSOR; --定义游标 4 PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE)

oracle中的job

oracle知识点-job oracle中的job类似于Linux中的crontab的作用,用于定时执行某些操作 相关视图:dba_jobs,user_jobs,all_jobs,dba_jobs_running 相关参数:job_queue_processes 相关包:dbms_job 有关dba_jobs.dba_jobs_running 字段的解释: dba_jobs 描述数据库中所有的job desc dba_jobs 有关interval参数的值 dba_jobs_running  列