PL/SQL子程序 它包含了函数和过程。此功能是指用户定义的函数。和系统功能是不同的。子程序通常完成特定的功能PL/SQL座。,能够被不同的应用程序多次调用。Oracle提供能够把PL/SQL程序存储在数据库中,并能够再不论什么地方来执行它。

这样就叫做存储过程或者是函数。

过程和函数的唯一差别就是函数总是向调用者返回数据。而过程则不返回数据。

函数

假设用户要常常运行某些操作,而且须要返回特定的数据。那么就能够将这些操作构造成一个函数。

能够使用SQL语句定义函数。

基本的语法:

create or replace function fun_name(argument [in | out | in out ]datatype  ...)

return datatype 

is | as

       -- 须要定义的变量 。记录类型 。 游标

begin

       --函数的运行体

exception

       --处理出现的异常

end ;

当中,return datatype , 是要返回数据的类型。IN參数标记表示传递给函数的值在函数运行中不改变;OUT标记表示一个值在函数进行计算并通过该參数传递给调用语句;IN OUT 标记表示传递给函数的值能够变化并传递给调用语句。

例:定义一个返回hello 的函数

create or replace function hello

return varchar2 

is

begin

       return 'Hello World';

end ;

运行 ,Function created ,函数创建成功。

函数的调用。与Oracle内置函数的调用同样,能够使用select hello from dual ;进行调用,也能够使用PL/SQL语句进行调用 :

begin

dbms_output.put_line(hello);

end ;

例:创建带參数的helloworld函数

create or replace function helloworld(str varchar2)

return varchar2

is

begin

       return 'Hello' || '_' ||str ;

end ;

函数的调用要在函数名称后面加上參数,即:select helloworld('World') from dual ;使用Pl/sql的调用除了加上參数外与上面同样,不在赘述。

例:求一个部门中,员工的工资总数的函数

create or replace function get_sal(dept number)

return number 

is

       v_sum number(10) := 0 ;

       cursor sal_cursor is select sal from emp where deptno = dept ;

begin 

       for c in sal_cursor loop

           v_sum := v_sum + c.sal ;

       end loop ;

       return v_sum ;

end ;

存储过程

存储过程,能够被多个应用程序调用。也能够向存储过程传递參数。向存储过程传回參数。

基本的语法

create or replace procedure pro_name(argument [in | out | in out ]datatype  ...) 

is | as

       -- 须要定义的变量 ,记录类型 , 游标

begin

       --函数的运行体

exception

       --处理出现的异常

end ;

例:使用存储过程。求部门的工资总和

create or replace procedure get_sal1(dept number ,sumsal out  number)

is

       cursor sal_cursor is select sal from emp where deptno = dept ;

begin 

       sumsal := 0 ;

       for c in sal_cursor loop

           sumsal := sumsal + c.sal ;

       end loop ;

       dbms_output.put_line(sumsal);

end ;

存储过程的调用:

declare 

  v_sum number(10) := 0 ;

begin 

  get_sal1(30 , v_sum);

end ;

调用格式:

CALL | EXCEUTE procedure_name(arg_list) ;

能够使用show error 命令来提示源代码的错误位置。

使用user_error 数据字典来查看各存储过程的错误位置。

删除过程和函数

删除过程

语法例如以下:

DROP PROCEDURE[USER.]procedure_name ;

删除函数

语法例如以下:

DROP FUNCTION [USER.]function_name ;

版权声明:本文博主原创文章。博客,未经同意不得转载。

Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)的更多相关文章

  1. PL/SQL学习笔记_03_存储函数与存储过程

    ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dua ...

  2. Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

    触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...

  3. Oracle 学习笔记(Windows 环境下安装 + PL/SQL)

    Oracle 安装.PL/SQL 配置使用  前言:因更换机械硬盘为 SSD 固态硬盘装了新 Windows 7 系统,需要重新搭建开发环境,把 Oracle 安装过程和 PL/SQL 配置使用做下笔 ...

  4. Oracle学习笔记:trunc函数

    在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...

  5. Oracle学习笔记:wm_concat函数合并字段

    在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...

  6. Oracle学习笔记_03_单行函数

    1.SQL函数: 单行函数.多行函数 单行函数:       操作数据对象       接受参数返回一个结果       只对一行进行变换       每行返回一个结果       可以转换数据类型  ...

  7. Oracle学习笔记之用户自定义函数

    自定义函数语法格式:   用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用:注意:函数只能有一个返回值 ...

  8. Oracle学习笔记:decode函数

    decode函数主要作用:将查询结果翻译成其他值(即以其他形式变现出来) 使用方法: SELECT DECODE(colunm_name,值1,翻译值1,值2,翻译值2……值n,翻译值n,缺省值) F ...

  9. Oracle学习笔记_05_分组函数

    组函数:avg  sum  max  min   count group by having group by 增强:rollup      cube     grouping      groupi ...

随机推荐

  1. 9.9 Binder系统_Java实现_Android里java程序的编译启动

    如果知道了进程号:通过ls /proc/进程号/task 可以看到所有线程    cat /proc/进程号/task/线程号/comm  可以达到线程名字(主线程是main,主线程号就是进程号) d ...

  2. js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么

    js课程 3-10  js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...

  3. 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议

    摘要:     本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别.   一.IPv4数据报     网络层是 ...

  4. SetForegroundWindow

    SetForegroundWindow 函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口.键盘输入转向该窗口,并为用户改各种可视的记号.系统给创建前台窗口的线程分配的权限稍高于其他线程. ...

  5. MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)

    呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下: HWND FindWindow ( LPCSTR ...

  6. sqlplus中怎么将你全部的操作和结果记录保存到你指定的文件里

    [在sqlplus的操作中,非常多时候我们都想把自己的写的sql语句和改动日志或者结果信息做记录] [首先]肯定要正常连接到oralce数据库. [然后] 你用你指定的用户登录到oralce数据库之后 ...

  7. 【t070】二进制

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 求所有可以只用1和00拼成的长度为N的二进制数的个数除以15746的余数. 比如当N=4的时候,有5个 ...

  8. .NET-架构优化实战-底层服务优化

    原文:.NET-架构优化实战-底层服务优化 前言 问题分析 在本系列第一篇文章我们提到,底层问题主要存在以下两点: 代码冗余 时效低 代码冗余 例如: 领奖方法不统一,一次性的写一套,可循环的又写一套 ...

  9. 编辑器sublime、终端运行python

    sublime编辑器 Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用) Sublime Text是由程序员Jon Skinner于2008年1月份 ...

  10. JBoss AS 7之初步了解(The Return Of The King)

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obl9mX2xhdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...