一、Oracle存储函数:存储的PL/SQL语法块,完成特定的功能。
1、语法: 函数关键字: function

(1)创建函数

CREATE [OR REPLACE] FUNCTION  <function name> [(param1,param2)] RETURN <datatype>  IS|AS
[local declarations]
declare
.....
BEGIN
Executable Statements;
RETURN result;
EXCEPTION
Exception handlers;
END;

(2)调用函数

--调用
--1.写查询调用
select fun1 from dual;
--2.PL/SQL语法块调用
declare
my_name varchar2(20);
begin
my_name := fun1;
dbms_output.put_line(my_name);
end;

2、函数的参数模式

(1)输入参数 in:
--有参的函数

create or replace function fun2(s_id number) return varchar2
as
t_name varchar2(20);
begin
  select sname into t_name from stu where sid = s_id;
  return t_name;
end; select fun2(4) from dual;

例:输入in与输出out参数

create or replace function fun2(t_id number,t_name out varchar2) return varchar2
as
begin
select sname into t_name from stu where sid = t_id;
return t_name;
end; declare
stu_name varchar2(20);
my_name varchar2(20);
begin
stu_name := fun2(1,my_name);
dbms_output.put_line(stu_name);
end;

(2)in out参数

create or replace function fun3(num1 in out number,num2 in out number) return varchar2
as
t_temp number;
begin
t_temp := num1;
num1 := num2;
num2 := t_temp;
return num1 + num2;
end; declare
numa number := 10;
numb number := 20;
numc number;
begin
dbms_output.put_line(numa || '--'||numb);
numc := fun3(numa,numb);
dbms_output.put_line(numa || '--'||numb);
end;

注意:1、参数要为变量,定值返回时无法赋值。

   2、函数return要有返回值 就是end之前return语句,当调用函数时还需要声明一个变量接受返回值,即使没有使用。

规范:参数v开头,如v_name,临时变量t_name (temp_name)。

二、Oracle存储过程

Oracle存储过程:将执行的过程存储起来就是存储过程。
1、语法 :存储过程关键字 procedure

CREATE [OR REPLACE] procedure <procedure name> [(param1,param2)] IS|AS
[local declarations]
BEGIN
Executable Statements;
EXCEPTION
Exception handlers;
END;

参数用法和存储函数一样
调用:略有不同
1.PL/SQL语法块
2.命令行 使用 execute 命令去调用  如 execute procedure_name(param1,param2);

三、区别

存储过程和存储函数的区别:
1、存储函数有返回值,存储过程没有返回值
2、调用方式略有不同.. 函数和过程都支持 pl/sql调用
      函数支持 (select)查询直接调用 过程支持 execute 命令调用
3、存储过程是否可以代替存储函数? 可以代替,但是兼容性问题,存储过程后出现 。之前的项目要支持。

 存储函数有时更加方便,可以直接select查询调用,

--视图配合存储函数

create or replace view emp_v as
select e.*,yearsal(e.sal,e.comm) as "年薪" from emp e;
--计算年薪的存储函数
create or replace function yearsal(v_sal number,v_comm number) return number as
t_year number;
begin
t_year := v_sal*12+nvl(v_comm,0);
return t_year;
end;

Oracle存储函数,存储过程的更多相关文章

  1. PL/SQL轻量版(四)——存储函数/存储过程与触发器

    概述 ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数.过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数 ...

  2. Oracle存储函数jdbc调用

    package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...

  3. ORACLE 存储函数

    前奏: 必要的概念: ORACLE 提供能够把 PL/SQL 程序存储在数据库中.并能够在不论什么地方来运行它.这样就叫存储过 程或函数. 过程和函数统称为 PL/SQL 子程序.他们是被命名的 PL ...

  4. oracle存储函数实例

    CREATE OR REPLACE PROCEDURE "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is --PROC_INS_DAY_ ...

  5. oracle 游标/函数/存储过程/触发器 表空间

    --存储过程,循环create or replace procedure delTables(ename t_emp.ename%TYPE)AScon number;i NUMBER := 1;tab ...

  6. 关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例

    CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  NAME VARCHAR2(20),  CLASSNAME VA ...

  7. oracle 存储函数,更新库存

    create procedure PRO_update_Goods_group_stock is v_min_stock , ); v_gg_stock , ); v_goods_no number; ...

  8. oracle存储过程和存储函数&触发器

    oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 ...

  9. Oracle的基本语法,存储函数及触发器

    1.PL/SQL    PL/SQL是Oracle对 ql语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句,使SQL语言具有过程处理能力.把 SQL 语言的数据操纵能  力与过程语言的数据 ...

随机推荐

  1. 模拟——1031D

    /* dp[i][j]表示到[i,j]的权值 cnt[i,j]表示到[i,j]还可以使用的修改的次数 cnt[i,j]=max(cnt[i-1,j],cnt[i,j-1]) 如果mp[i,j]!='a ...

  2. 莫烦PyTorch学习笔记(三)——激励函数

    1. sigmod函数 函数公式和图表如下图     在sigmod函数中我们可以看到,其输出是在(0,1)这个开区间内,这点很有意思,可以联想到概率,但是严格意义上讲,不要当成概率.sigmod函数 ...

  3. 前端面试题之一JAVASCRIPT(算法类)

    一.JS操作获取和设置cookie //创建cookie function setcookie(name, value, expires, path, domain, secure) { var co ...

  4. 在线Online表单来了!JeecgBoot 2.1 版本发布——基于SpringBoot+AntDesign的快速开发平台

    项目介绍 Jeecg-Boot 是一款基于SpringBoot+代码生成器的快速开发平台! 采用前后端分离架构:SpringBoot,Ant-Design-Vue,Mybatis,Shiro,JWT. ...

  5. HTML 颜色表示

    三种表示方法 1 颜色单词 : blue green red pink 2 10进制表示: RGB(255, 10, 0) 3 16进制表示: #FF0000(红)  #00FF00(绿)

  6. PAT甲级——A1084 Broken Keyboard

    On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters ...

  7. hibernate hql语句 注意事项

    现在有实体类 Student 和User . public class Student{ private String id; private Sting classRoom; private Use ...

  8. 操作系统-CPU调度

    概念 控制.协调多个进程对CPU的竞争 即按一定的调度算法从就绪队列中选择一个进程,把CPU的使用权交给被选中的进程 场景 N个进程就绪,等待上M(M>=1)个CPU运行,需要决策哪个进程分配给 ...

  9. java基础之Math类

    Math类概述Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数. 成员方法 public static int abs(int a):绝对值 public static ...

  10. redis Hash 命令

    HDEL key field2 [field2] 删除一个或多个哈希表字段 HEXISTS key field 查看哈希表 key 中,指定的字段是否存在. HGET key field 获取存储在哈 ...